n番目の区切り記号の前のすべての項目を印刷します。

n番目の区切り記号の前のすべての項目を印刷します。

sed私は次の解決策を探しています。n番目の区切り文字の後のすべての項目を印刷します。

sed -E 's/^([^\]*[\]){3}//' infile

ただし、例のように、n番目の区切り文字を抽出するのではなく、n番目の区切り文字の前のテキストを抽出します。すべてのsedバリアントで動作することです。例のように、すべての行に対して実行します。

この例の区切り記号は、\別の区切り記号である可能性があります。すべてのバージョンのsedで動作する必要があります。

ベストアンサー1

なぜそれを使用しないのですかcut

cut -d '\' -f 1-3 infile

一致を削除するのではなく、を使用してそれらをsedキャプチャし、逆参照を使用して行全体をキャプチャされたグループに置き換えます。

sed -E 's/(^([^\]*[\]){3}).*/\1/' infile

これは末尾のバックスラッシュも印刷しますが...これを防ぐために、以下を実行できます。

sed -E 's/(^([^\]*[\]){2}[^\]*).*/\1/' infile

おすすめ記事