我有一个看起来像
的文件No. 1 2 3 4 5
1 1 0 1 0 1
5 0 0 0 0 0
7 1 1 1 0 1
8 0 1 1 0 1
9 1 1 0 0 0
6 0 0 0 0 0
4 0 0 1 0 1
我想附加一个文本,让我们说第一行中所有项目前面的var除了前几个(比方说2,这个数字不同),这样我的文件看起来像
No. 1 var2 var3 var4 var5
1 1 0 1 0 1
5 0 0 0 0 0
7 1 1 1 0 1
8 0 1 1 0 1
9 1 1 0 0 0
6 0 0 0 0 0
4 0 0 1 0 1
我尝试使用awk语句
awk '{ if(NR==1) for (i = 1; i <= NF; i++)
print "var"$i;
for (j = 2; j <= NR; j++) print $0 }' input
但我没有得到预期的结果。有没有更简单的方法呢?
答案 0 :(得分:6)
awk 'NR==1{for(i=3;i<=NF;i++) {$i = "var" $i}}1' File
<强>逻辑:强>
`NR==1` => If Line 1, from 3rd field (`i=3`) to end of line (`i=NF`), change `i`th field to `varith field`.
示例:强>
~$ cat File
No. 1 2 3 4 5
1 1 0 1 0 1
5 0 0 0 0 0
7 1 1 1 0 1
8 0 1 1 0 1
9 1 1 0 0 0
6 0 0 0 0 0
4 0 0 1 0 1
~$ awk 'NR==1{for(i=3;i<=NF;i++) {$i = "var" $i}}1' File
No. 1 var2 var3 var4 var5
1 1 0 1 0 1
5 0 0 0 0 0
7 1 1 1 0 1
8 0 1 1 0 1
9 1 1 0 0 0
6 0 0 0 0 0
4 0 0 1 0 1
您可以根据需要更改i
的值。
答案 1 :(得分:3)
试试这一行:
awk -v val=2 'NR==1{for(i=1;i<=NF;i++)$i=($i>=val?"var"$i:$i)}7' file
使用所需的值更改变量val=2
。