如何使用 AWK 增加列

如何使用 AWK 增加列

我有以下文件模式:

insert_buffer cell_a 
insert_buffer cell_b
insert_buffer cell_b
...

我想在每行末尾添加一列,并增加数字。例如 0,1,2,3...:

insert_buffer cell_a name_0
insert_buffer cell_b name_1
insert_buffer cell_b name_2
...

如何使用 awk for 循环?或者任何其他解决方案都可以。

答案1

$ awk '{$(NF+1) = "name_"(NR-1)} 1' file
insert_buffer cell_a name_0
insert_buffer cell_b name_1
insert_buffer cell_b name_2

如果您想使用自己的变量代替内置记录计数NR,那么例如

$ awk '{$(NF+1) = "name_"i++} 1' file
insert_buffer cell_a name_0
insert_buffer cell_b name_1
insert_buffer cell_b name_2

如果您想在其他地方插入新字段,那么一种方法是将其添加到现有字段之前或附加到现有字段,以及附加的输出字段分隔符,OFS例如在第二个字段之前插入

$ awk '{$2 = "name_"i++ OFS $2 } 1' file
insert_buffer name_0 cell_a
insert_buffer name_1 cell_b
insert_buffer name_2 cell_b

答案2

这可以使用给定的编辑器来完成sed

请注意,由于sed没有算术概念,因此可以通过其他方式来完成。

the variable $n stores the column number where you want the new data placed.

n=2;
sed -ne 1i\\ -e 0 -e p\;= yourfile |\
sed -nE "N;s/\S\+/&\n/$n;s/\(.*\)\n\(.*\)\n/\2 name_\1 /p"

结果

insert_buffer name_0  cell_a
insert_buffer name_1  cell_b
insert_buffer name_2  cell_c

相关内容