我想从以SET CURRENT开头的每个段落中提取信息,并将结果保存为csv。 例如,如果我有以下代码:
SET CURRENT = 'aaa' ;
CREATE SYN file1 FOR 1000.file1 ;
CREATE SYN file2 FOR 1000.file2 ;
CREATE SYN file3 FOR 1001.file3 ;
CREATE SYN file4 FOR 1001.file4 ;
SET CURRENT = 'bbb' ;
CREATE SYN file5 FOR 1002.file5 ;
CREATE SYN file6 FOR 1003.file6 ;
如何获得以下结果
file1;SYN;1000.file1;aaa
file2;SYN;1000.file2;aaa
file3;SYN;1001.file3;aaa
file4;SYN;1001.file4;aaa
file5;SYN;1002.file5;bbb
file6;SYN;1003.file6;bbb
我设法从以CREATE SYN开头的行中获取信息,但是如何添加第一行的信息。
答案 0 :(得分:1)
这个awk单行应该给你想要的东西:
awk -v q="'" -v OFS=";" '/^SET CUR/{split($0,a,q);v=a[2]}
/CREATE SY/{print $3,$2,$5,v}' file
使用您的数据进行测试:
kent$ awk -v q="'" -v OFS=";" '/^SET CUR/{split($0,a,q);v=a[2]}/CREATE SY/{print $3,$2,$5,v}' f
file1;SYN;1000.file1;aaa
file2;SYN;1000.file2;aaa
file3;SYN;1001.file3;aaa
file4;SYN;1001.file4;aaa
file5;SYN;1002.file5;bbb
file6;SYN;1003.file6;bbb