[英]How to find and replace in bash that uses a tab-delimited file that contains the original string in column1 and the new string in column 2?
[英]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.