繁体   English   中英

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

[英]Add a new column with Line number to a pipe delimited file

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

我当前的文件如下所示:

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

我有超过 90k 行。 我找不到办法做到这一点。 任何帮助或指导将不胜感激。 谢谢

一个有趣的选择:

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

虽然实际上我会用

awk '{print (NR==1 ? "LN" : NR-1), $0}' OFS="|" file

你能试试下面的吗?

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM