10

ファイルで文字列を検索し、文字列を含む行を削除し、文字列を含む行に続く 2 行も削除する必要があります。このようなものを使用してこれを達成できることを望んでいました...

$ grep -v -A 2 two temp.txt
one
five
$

...しかし、残念ながらこれはうまくいきませんでした。grepまたは別のシェルコマンドでこれを行うことができる簡単なものはありますか?

4

4 に答える 4

1

これを Perl で行う方法は次のとおりです。

$ perl -ne'if (/two/){$x=<>;$x=<>;}else{print}' temp.txt 
one
five

これ-nは、入力に対する暗黙のループです。に一致する場合/two/は、次の 2 行を読みます。そうでない場合は、現在の行を印刷します。

ただし、問題は、3 行目または 4 行目が /two/ に一致した場合でも、同じ出力が得られることです。@paxdiabloのソリューションはより完全です。しかし、私のものはもっと Q&D です。

于 2013-04-17T02:59:24.123 に答える