Regex で渡した行を除くテキスト内のすべての行を検索する Regex を使用したいと考えています。ここに便利なコードが見つかりました ここにリンクの説明を入力してくださいawk '/.*test.*/{f=1}f;/end/{f=0}' myFile
。逆に使いたい。
つまり、 testとendの間の行は見たくありませんが、他の行は見たいということです。
これをLinux環境で実行したいと考えています。
これらを否定するにはどうすればよいAWK
ですか?
Regex で渡した行を除くテキスト内のすべての行を検索する Regex を使用したいと考えています。ここに便利なコードが見つかりました ここにリンクの説明を入力してくださいawk '/.*test.*/{f=1}f;/end/{f=0}' myFile
。逆に使いたい。
つまり、 testとendの間の行は見たくありませんが、他の行は見たいということです。
これをLinux環境で実行したいと考えています。
これらを否定するにはどうすればよいAWK
ですか?
first
との間のすべての行を表示するには、次のようにしend
ます。
awk '/first/,/end/'
それを逆にするには:
awk '/first/,/end/{next}1'
(2 番目の例では、もう少し読みやすくなっています: awk '/first/,/end/{next}{print}'
。上記のバージョンは awk のデフォルト アクションに依存し{print}
ます。1
true
sed
これにはより適切です:
sed '/first/,/end/d'
first
は、パターンに一致する最初の行まで、パターンに一致する行の間およびパターンに一致する行を含むすべての行を削除しますend
。
このようないくつか
awk '/test/ {f=1} !f; /end/ {f=0}' file
が見つかるまですべての行をtest
印刷し、が見つかったら再び印刷を開始しますend
。