ファイルがあります。sample.txt
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
ord:RAM SAM
XY DUPL
KEY:UU
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
キーワードに基づいて注文をフィルタリングord:chandru
し、key:ZZ
これらの項目が見つかったら、ハイフンからハイフンまでの順序を削除して、次の出力を提供します。
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
ベストアンサー1
GNUがある場合は、awk
以下をお勧めします。
gawk 'BEGIN{RS="-+\n"} $0=="" || /ord:chandru/ && /KEY:ZZ/ {ORS=RT; print}' sample.txt
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
空のレコードを強制的に$0==""
印刷します(レコードがハイフン文字列で区切られていると思われる場合は、ファイルの最初の行が解釈される方法です)。
もしあなたならいいえはいgawk
、その場合の唯一の違いは、レコード区切り文字を簡単にキャプチャできないことです。これは固定文字列なので、提供した例では大きな問題ではありません。例えばmawk
:
mawk 'BEGIN{RS="-------------\n"; ORS=RS} $0=="" || /ord:chandru/ && /KEY:ZZ/ {print}' sample.txt
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------