文件包含ID,名称和其他列。我想在特定ID之前插入包含名称的行和详细信息。然后应使用正确的ID序列更新ID列。
示例
示例文件内容:
Header1
Header2
1 AAA ...
2 BBB ...
3 CCC ...
4 XXX ...
5 YYY ...
6 ZZZ ...
Footer
我想在ID#4之前插入MMM ...
,即在行4 XXX ...
之前插入
期望的输出:
Header1
Header2
1 AAA ...
2 BBB ...
3 CCC ...
4 MMM ...
5 XXX ...
6 YYY ...
7 ZZZ ...
Footer
我可以使用以下命令进行正确插入,但不确定如何使用正确的编号更新ID列。
sed '/^\s*4/ i 4 MMM ...' file
如果你可以帮我解决这个问题,那将是件好事。
答案 0 :(得分:4)
一个选项可以是:
awk '/^4/ {print ++i, "MMM"} /^[0-9]/ {$1=++i} 1' file
/^4/ {print ++i, "MMM"}
从4
开始在线,打印MMM
并增加值。/^[0-9]/ {$1=++i}
在以number开头的行上,将第一个字段设置为增量值。1
打印行$ awk '/^4/ {print ++i, "MMM"} /^[0-9]/ {$1=++i} 1' file
Header1
Header2
1 AAA ...
2 BBB ...
3 CCC ...
4 MMM
5 XXX ...
6 YYY ...
7 ZZZ ...
Footer
答案 1 :(得分:2)
$ awk '/^4 /{print "4 MMM ..."; inc=1} /^[[:digit:]]/{$1+=inc} 1' file
Header1
Header2
1 AAA ...
2 BBB ...
3 CCC ...
4 MMM ...
5 XXX ...
6 YYY ...
7 ZZZ ...
Footer