Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将字符串附加到特定字段中的特定记录_Bash_Shell_Unix_Awk_Scripting - Fatal编程技术网

Bash 将字符串附加到特定字段中的特定记录

Bash 将字符串附加到特定字段中的特定记录,bash,shell,unix,awk,scripting,Bash,Shell,Unix,Awk,Scripting,我有一个文件看起来像 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

我有一个文件看起来像

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
awk'{if(NR==1)for(i=1;i)
示例:

`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
~$cat文件
第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
示例:

`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
~$cat文件
第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试试这行:

awk -v val=2 'NR==1{for(i=1;i<=NF;i++)$i=($i>=val?"var"$i:$i)}7' file
awk-v val=2'NR==1{for(i=1;i=val?“var”$i:$i)}7'文件
用所需的值更改变量
val=2

试试这一行:

awk -v val=2 'NR==1{for(i=1;i<=NF;i++)$i=($i>=val?"var"$i:$i)}7' file
awk-v val=2'NR==1{for(i=1;i=val?“var”$i:$i)}7'文件

将变量
val=2
更改为所需的值。

awk'NR==1{for(i=3;i@zhujs当前位置此处用于打印所有记录,即使是未受影响的记录…请查看此处:,您会更好地理解。哦,非常感谢您much@A.M.D我现在如何更改标签?从2改为5,称为“患者2”。从6改为结束,称为“Pat 6”.awk'NR==1{for(i=2;你能显示整体预期输出吗?如果我正确理解了你,这个shud对你有效:awk'NR==1{for(i=2;i
awk'NR==1{for(i=3;i@zhujs当前位置此处用于打印所有记录,即使是未受影响的记录…请查看此处:,您会更好地理解。哦,非常感谢您much@A.M.D现在我如何才能改变标签。从2到5作为“患者2”。从6到结束作为“Pat 6”。awk'NR==1{for(i=2;你能显示整体的预期输出吗?如果我对你理解正确,这个shud对你有效:awk'NR==1{for(i=2;i