我有一个文件,其中所有行都相同但第一行有一组常量我想用于所有其他字段。
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
我当前的代码只会正确处理第一行,然后退出
ActualOutcome.txt
1 2A B 3 C 4
代码
#!/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;
}
答案 0 :(得分: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