Bash 我可以在awk中设置仅出现在第一行的常数吗?
我有一个文件,其中所有行都是相同的,但第一行有一组常量,我想用于所有其他字段 File.txt(选项卡分隔) A B C 1 2 3 4 D E F G H I 我希望结果符合以下原则: ExpectedOutcome.txt 1 2A B 3 C 4 1 2D E 3 F 4 1 2G H 3 I 4 我的当前代码将只正确处理第一行,然后退出 actualoutcom.txt 1 2A B 3 C 4 代码Bash 我可以在awk中设置仅出现在第一行的常数吗?,bash,unix,awk,gawk,Bash,Unix,Awk,Gawk,我有一个文件,其中所有行都是相同的,但第一行有一组常量,我想用于所有其他字段 File.txt(选项卡分隔) A B C 1 2 3 4 D E F G H I 我希望结果符合以下原则: ExpectedOutcome.txt 1 2A B 3 C 4 1 2D E 3 F 4 1 2G H 3 I 4 我的当前代码将只正确处理第一行,然后退出 actualoutcom.txt 1 2A B 3 C 4 代码 #!/bin/sh Begin{FS="\t";OFS="\t"} { i
#!/bin/sh
Begin{FS="\t";OFS="\t"}
{
if(NR=1){
FirstConstant=$4;
SecondConstant=$5;
ThirdConstant=$6;
FourthConstant=$7;
}
if($1){
Combo=SecondConstant $1;
}
print FirstConstant, Combo, $2, ThirdConstant, $3, FourthConstant;
}
使用awk
:
# space separatered output
$ awk 'NR==1{a=$4;b=$5;c=$6;d=$7}{print a,b$1,$2,c,$3,d}' file
1 2A B 3 C 4
1 2D E 3 F 4
1 2G H 3 I 4
# tab separatered output
$ awk 'NR==1{a=$4;b=$5;c=$6;d=$7}{print a,b$1,$2,c,$3,d}' OFS='\t' file
1 2A B 3 C 4
1 2D E 3 F 4
1 2G H 3 I 4
使用awk
:
# space separatered output
$ awk 'NR==1{a=$4;b=$5;c=$6;d=$7}{print a,b$1,$2,c,$3,d}' file
1 2A B 3 C 4
1 2D E 3 F 4
1 2G H 3 I 4
# tab separatered output
$ awk 'NR==1{a=$4;b=$5;c=$6;d=$7}{print a,b$1,$2,c,$3,d}' OFS='\t' file
1 2A B 3 C 4
1 2D E 3 F 4
1 2G H 3 I 4