将带有行号的新列添加到管道分隔文件中

时间:2018-10-12 14:55:55

标签: macos awk terminal

我真的很努力在终端中将带有行号的新列添加到管道分隔文件中

我当前的文件如下:

ID|FirstName|LastName
12|John|Svernson
23|Mark|Wright
11|Chris|Watson

我希望文件看起来如下:

LN|ID|FirstName|LastName
1|12|John|Svernson
2|23|Mark|Wright
3|11|Chris|Watson

我有超过9万行。我找不到办法。任何帮助或指导,将不胜感激。谢谢

4 个答案:

答案 0 :(得分:4)

一个有趣的选择:

var config = new ContainerConfiguration()
    .WithAssemblies(new[]{ typeof(AppShell).Assembly}, conventionBuilder);

尽管实际上我会用

{ echo LN; seq $(( $(wc -l < file) - 1 )); } | paste -d'|' - file

答案 1 :(得分:2)

请您尝试以下。

awk 'FNR==1{print "LN|"$0;next} {$1=++count "|" $1} 1'   Input_file

也要将输出写入Input_file本身,请在上面的代码中附加> temp_file && mv temp_file Input_file

答案 2 :(得分:1)

使用awk变量NR(记录号):

awk -F'|' 'NR==1{print "LN" FS $0}NR!=1{print NR-1 FS $0}' file

答案 3 :(得分:0)

我会使用nl。如果行号超过6位,可能会遇到问题,但是如果需要,您可以添加-w来增加数字宽度:

   { read line; echo "LN|$line"; cat | nl -w 10 -ba -s \|; } < input | 
       sed 's/^ *//';