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