最初の一致を含む行の上のn行前のすべての行を削除します。

最初の一致を含む行の上のn行前のすべての行を削除します。

ファイルに次の内容が含まれている場合:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9

これで、ファイルに次の内容のみが含まれるように、「5行目」の前に2行以上ある行を削除するにはどうすればよいですか?

Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9

ベストアンサー1

ed以下を使用してアドレスオフセットをサポートする方が簡単です。

printf '%s\n' '/Line 5/-2,$p' | ed -s file

または(ファイルを所定の位置に修正)

printf '%s\n' '1,/Line 5/-3d' 'wq' | ed -s file

おすすめ記事