file1.txt /file2.txt ファイルがあります。 awkコマンドを実行して「Type header call_header」と「END」の境界検索を実行すると、ENDの下の行も印刷されます。例:-
ファイル1.txt
Type header call_header
abc , def , ghi ,
jkl ,mno
END
Define call_header
type as call_header
phil2.txt
Type head call_header
data1, data2, voice ,
mms , mms2
END
Define call_header
type as call_header
私は試した:
awk '/^Type (header|head) call_header$/,/^END?$/' {print} file1.txt
ただし、他の行も印刷します。
次のデータのみが必要です。
Type header call_header
abc , def , ghi ,
jkl ,mno
END
答え1
あなたのawk
通話が間違っています:
awk '/^Type (header|head) call_header$/,/^END?$/' {print} file1.txt
ここでは、awk
というファイルを検索します{print}
。
スクリプト全体を一重引用符で囲む必要があります。
awk '/^Type (header|head) call_header$/,/^END?$/ {print}' file1.txt
あるいは、代わりに(最初の正規表現を少し短くして完全に削除{ print }
)、
awk '/^Type head(er)? call_header$/,/^END?$/' file1.txt
OpenBSDawk
とGNUでmawk
テストされましたawk
。
の場合、sed
これは上記と非常に似ています。
sed -nr '/^Type head(er)? call_header$/,/^END?$/p' file1.txt