Linux中如何在带标题的制表符分隔文件中添加行名
我正在处理一个具有数千行和标题的表文件。 但我必须在每行中添加行名row name代表行号。 我如何在linux中做到这一点 我可以用excel完成这项工作,但是文件太多了,所以我希望我能写下linux命令来处理它 我的文件看起来像这样Linux中如何在带标题的制表符分隔文件中添加行名,linux,Linux,我正在处理一个具有数千行和标题的表文件。 但我必须在每行中添加行名row name代表行号。 我如何在linux中做到这一点 我可以用excel完成这项工作,但是文件太多了,所以我希望我能写下linux命令来处理它 我的文件看起来像这样 parameter1 parameter2 paramter3 1.2 1.3 1.4 2.1 2.1 1.5 1.5 1.6 2.1 .... 我想添加行名称,如下所示: sim parameter1 parameter2 paramter3 AM_1_ar
parameter1 parameter2 paramter3
1.2 1.3 1.4
2.1 2.1 1.5
1.5 1.6 2.1
....
我想添加行名称,如下所示:
sim parameter1 parameter2 paramter3
AM_1_arp 1.2 1.3 1.4
AM_2_arp 2.1 2.1 1.5
AM_3_arp 1.5 1.6 2.1
....
如何使用linux命令执行这些操作?使用awk:
awk 'NR==1{print "sim "$0;next}{print "AM_"NR-1"_arp "$0}' yourfile
也就是说:
如果这是第一行标题行NR==1,则打印sim加上整行:打印sim$0;
转到下一行,跳过下一个程序的其余部分
对于遇到的任何其他行,打印AM加上行号NR加上arp,然后整行$0。
如果目录中有许多文件需要执行此操作,则可以通过通配符引用这些文件,并且可以在awk中重定向输出:
awk 'NR==1{print "sim "$0 > FILENAME"_out";next}{print "AM_"NR-1"_arp "$0 > FILENAME"_out"}' ./yourfile*
使用awk:
awk 'NR==1{print "sim "$0;next}{print "AM_"NR-1"_arp "$0}' yourfile
也就是说:
如果这是第一行标题行NR==1,则打印sim加上整行:打印sim$0;
转到下一行,跳过下一个程序的其余部分
对于遇到的任何其他行,打印AM加上行号NR加上arp,然后整行$0。
如果目录中有许多文件需要执行此操作,则可以通过通配符引用这些文件,并且可以在awk中重定向输出:
awk 'NR==1{print "sim "$0 > FILENAME"_out";next}{print "AM_"NR-1"_arp "$0 > FILENAME"_out"}' ./yourfile*
我将在每一行的开头添加您选择的字符串,其中有一个计数器,然后将第一个实例替换为sim作为标题
我将在每一行的开头添加您选择的字符串,其中有一个计数器,然后将第一个实例替换为sim作为标题。谢谢,我尝试了该代码,它确实打印了行名。但NF似乎不起作用,所有行名称都是相同的AM_10_ARP,这很奇怪。我从来没有遇到过不工作的人。我很高兴看到I++计数器版本正在发挥作用!我也尝试过这个版本,我也得到了一个奇怪的数字,比如:AM_3_arp,AM_3_arp,AM_2_arp,AM_2_arp。我用GNUAWK3.1试过了。7@JNevillNF是字段数,你是说NR吗?@oguzismail OMG谢谢你!。显然我需要更多的咖啡。写了这么多年,我还是搞砸了。谢谢,我试过代码,它确实打印了行名。但NF似乎不起作用,所有行名称都是相同的AM_10_ARP,这很奇怪。我从来没有遇到过不工作的人。我很高兴看到I++计数器版本正在发挥作用!我也尝试过这个版本,我也得到了一个奇怪的数字,比如:AM_3_arp,AM_3_arp,AM_2_arp,AM_2_arp。我用GNUAWK3.1试过了。7@JNevillNF是字段数,你是说NR吗?@oguzismail OMG谢谢你!。显然我需要更多的咖啡。写了这么多年,我还是搞砸了。