一致後の行xの削除

一致後の行xの削除

sed一致後に2番目の行(または任意の数字)を削除し、一致とその間の行を除外するにはどうすればよいですか?

たとえば、

Enter command below
> login
Command valid
Enter your password at the below prompt
Remember to make sure no-one is looking at your screen
> mysecretword
Password accepted

「> mysecretword」行は「下のプロンプトにパスワードを入力してください」行の後に2行があるので削除したいと思います。ファイルの開始後、任意の行数で一致が発生する可能性があるため、絶対行番号の場所は使用できません。

オンライン検索で同様の解決策がたくさん見つかりましたが、sed '/Enter your password.*/,+3d' filex「パスワードを入力してください...」行と次の行も削除されますが、これは私が望むものではありません。一度一致した後、特定の行数の1行だけを削除したいと思います。

sedこれを行うには(または他の一般的なツール)、どのように使用しますか?

ベストアンサー1

おそらく

sed '/^Enter your password/ {
n
n
d
}' file

または均等に:

$ sed '/^Enter your password/ {n;n;d;}' file
Enter command below
> login
Command valid
Enter your password at the below prompt
Remember to make sure no-one is looking at your screen
Password accepted

おすすめ記事