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

awk可拆分可变长度记录,并在每组记录上添加唯一编号,awk,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.

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

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
有什么帮助吗?

使用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|

awk-F“DELIMITER”{for(i=1;i您可以将分隔符设置为
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|

$awk-F'分隔符[|]'{for(i=1;idito。删除
*
。对。这不是必需的。清除输入、输出和尝试的解决方案-+1!如果您只是想在每个字段的开头去掉一个潜在的“|”,那么在awk脚本中执行此操作就像添加管道和sed脚本一样简单:
{sub(/^ \ |/,“”,$i);print NR“|“$i}”
我想这会让你更清楚你在做什么。我会清理我的评论,接受你的建议。让我们继续吧