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}ます。1true
sedこれにはより適切です:
sed '/first/,/end/d'
firstは、パターンに一致する最初の行まで、パターンに一致する行の間およびパターンに一致する行を含むすべての行を削除しますend。
このようないくつか
awk '/test/ {f=1} !f; /end/ {f=0}' file
が見つかるまですべての行をtest印刷し、が見つかったら再び印刷を開始しますend。