如何在Linux中的带有标题的制表符分隔文件中添加行名

时间:2019-04-09 12:50:33

标签: linux

我正在处理具有数千行和标题的表文件。 但是我必须在每行中添加行名(行名代表行号)。 我如何在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_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命令完成这些操作?

2 个答案:

答案 0 :(得分:3)

使用awk:

 awk 'NR==1{print "sim "$0;next}{print "AM_"NR-1"_arp "$0}' yourfile

说:

  1. 如果这是第一行(标题行)NR==1,则打印“ sim”以及整行:print "sim "$0;
  2. 转到下一行,跳过程序的其余部分next
  3. 对于遇到的任何其他行,请打印“ AM”加上行号NR加上“ _arp”,然后打印整行$0

如果目录中需要执行许多操作,则可以通过通配符引用它们,也可以将输出重定向到awk内部:

awk 'NR==1{print "sim "$0 > FILENAME"_out";next}{print "AM_"NR-1"_arp "$0 > FILENAME"_out"}' ./yourfile*

答案 1 :(得分:2)

awk 'BEGIN {i=0} {print "AM_" i++ "_arp " $0}' <file> | sed 's/AM_0_arp/sim/g'

我只需将您选择的字符串添加到每行开头之间,并在其之间添加一个计数器,然后将sim替换为标题的第一个实例。