最初の一致を含む行の下のn行にあるすべての行を削除します。

最初の一致を含む行の下のn行にあるすべての行を削除します。

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

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

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

Line 1
FooLine 5
Line 2
Line 55
Line 3
Line 4
Line 5
Line 6
Line 7

注:これは質問のわずかに改善された反転バージョンです。最初の一致を含む行の上のn行前のすべての行を削除します。

ベストアンサー1

そしてsed

$ sed '/^Line 5$/{n;n;q;}' file
Line 1
FooLine 5
Line 2
Line 55
Line 3
Line 4
Line 5
Line 6
Line 7

ファイルを適切に編集するには、-iGNUsedまたは互換バージョン、-i ''FreeBSD sed、または互換バージョンオプションを追加します。

おすすめ記事