awkマルチパターンマッチングと1行印刷

awkマルチパターンマッチングと1行印刷

次のファイルがあります。

$ cat disk.out
disk0
fcs0
text
text
text
disk1
fcs1
text
text
text
text
...

私が達成したいのは、「disk」+「fcs」を一致させてから、このペアを次のように1行で印刷することです。

disk0,fcs0
disk1,fcs1
...

そのため、「disk」と「fcs」を一致させ、awk出力レコード区切り文字を「,」に変更しました。 `

$ awk '/disk|fcs/' ORS="," disk.out
disk0,fcs0,disk1,fcs1,

問題は、すべての一致を1行に印刷し、それに続くものを印刷することです,。各一致を1行にどのように印刷しますか?このように:

disk0,fcs0
disk1,fcs1
...

ベストアンサー1

次の「fcs」行が見つかるまで、「disk」行を印刷せずに保存する必要があります。

awk '/disk/{ DISK=$0; next } /fcs/{ print DISK "," $0 }'

あなたの方法の問題は、それが印刷されることです誰でも「disk」または「fcs」に一致する行は次のとおりです。結合するそのライン。

編集する:sp asicスクリプト無視するので、より強力です。

disk3
text
fcs3

この場合、私のスクリプトは「disk3、fcs3」を印刷します。

おすすめ記事