次のファイルがあります。
$ 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」を印刷します。