将序列号作为序列添加到UNIX中文件中特定位置的每一行

wae*_*ael 1 unix shell awk sed

我有一个Unix文件,其中多个行和字段用逗号分隔。我需要在每行的逗号后的第3个位置插入一个新字段作为序列号(1,2,3 ..)

之前的文字

roy,mike,apple,alex
roy,apple,water,joe
lemon,tony,juice,fred
Run Code Online (Sandbox Code Playgroud)

文字后

roy,mike,apple,1,alex
roy,apple,water,2,joe
lemon,tony,juice,3,fred
Run Code Online (Sandbox Code Playgroud)

Rav*_*h13 5

Though link shared by oguz ismail but seems link's solutions are a bit complex compare to this problem, so adding a simple one here.

awk 'BEGIN{FS=OFS=","} {$NF=++count OFS $NF} 1'  Input_file
Run Code Online (Sandbox Code Playgroud)

OR as per anubhava sir's comment you could try following too.

awk 'BEGIN{FS=OFS=","} {$NF = FNR OFS $NF} 1' Input_file
Run Code Online (Sandbox Code Playgroud)

这些解决方案假定必须将序列号插入最后一个字段($NF)之前,如所示。

FNR是单个输入文件中的记录号。如果在命令行上指定多个文件,则每个新文件的编号将跳回到1。如果您希望序列号继续计算所有输入文件,请使用NR代替FNR