awk分割可变长度记录并在每组记录上添加唯一编号

时间:2014-01-17 20:37:48

标签: awk

我有一个具有可变长度列的文件

x|y|XREC|DELIMITER|ab|cd|ef|IREC|DELIMITER|j|a|CREC|
p|q|IREC|DELIMITER|ww|xx|ZREC|

我想要的是

1|x|y|XREC|
1|ab|cd|ef|IREC|
1|j|a|CREC|
2|p|q|IREC|
2|ww|xx|ZREC|

到目前为止,我只是设法在开头获得序号

awk '{printf "%d|%s\n", NR, $0}' oldfile > with_seq.txt

任何帮助?

2 个答案:

答案 0 :(得分:2)

您可以将分隔符设置为DELIMITER

$ awk -F 'DELIMITER[|]' '{for (i=1;i<=NF;i++)print NR"|"$i}' file
1|x|y|XREC|
1|ab|cd|ef|IREC|
1|j|a|CREC|
2|p|q|IREC|
2|ww|xx|ZREC|

答案 1 :(得分:1)

使用awk

awk -F "DELIMITER" '{for(i=1;i<=NF;i++)print NR "|" $i}' file|sed 's/||/|/g'

1|x|y|XREC|
1|ab|cd|ef|IREC|
1|j|a|CREC|
2|p|q|IREC|
2|ww|xx|ZREC|