最初の一致後に行を削除します
「fox」という単語を含む最初の行の後のすべての行を削除する必要があります
たとえば、次の入力ファイル「in.txt」について説明します。
The quick
brown fox jumps
over
the
lazy dog
the second fox
is hunting
結果は次のようになります
The quick
brown fox jumps
私はawkまたはsedで作成されたスクリプトを好みますが、perl、php、pythonなどの他のコマンドラインツールも適しています。
検索の目的で、次の行を追加します。
発生後に行を削除する
後で編集:
私はWindowsでgnuwin32ツールを使用していますが、見つけた解決策は次のとおりです。
grep -m1 -n fox in.txt | cut -f1 -d":" > var.txt
set /p MyNumber=<var.txt
head -%MyNumber% in.txt > out.txt
しかし、私はより短く、移植性のあるソリューションを探しています(これにはWindows固有のコマンド「set / p」が含まれています
同様の質問:
パターンが最後に発生した後、すべての行を削除するにはどうすればよいですか?
それを保持する試合の前に行を削除するにはどうすればよいですか?
sedと一致する前にすべての行を削除します
sedを使用してパターン「[ERROR] -17-12-2015」に遭遇する前に、1行目から行までの行を削除するにはどうすればよいですか?
文字列の最初と最後の出現の前と後のすべての行を削除するにはどうすればよいですか?
回答
3 Cyrus
awk '{print} /fox/{exit}' file
GNU sedの場合:
sed '0,/fox/!d' file
または
sed -n '0,/fox/p' file