我有tab delim文件,如下所示:
a 12 17 bac 30 42
a 15 18
a 18 22
我想重复列bac 30 42到剩下的行如下:
a 12 17 bac 30 42
a 15 18 bac 30 42
a 18 22 bac 30 42
我尝试了以下命令awk '{$4=$4; $5=$5;$6=$6; print}' file.txt
,但它没有对文件进行任何修改。我怎样才能在awk中实现这一目标。
答案 0 :(得分:1)
$ awk -F"\t" -v OFS="\t" '$4!="" {four=$4; five=$5; six=$6} $0!="" {$4=four; $5=five; $6=six; print $0}' test.in
a 12 17 bac 30 42
a 15 18 bac 30 42
a 18 22 bac 30 42
答案 1 :(得分:0)
正确的解决方案FWIW:
$ awk 'NR==1{n=split($0,d)} {for (i=1;i<=n;i++) printf "%s%s", (i>NF ? d[i] : $i), (i<n ? OFS : ORS)}' file
a 12 17 bac 30 42
a 15 18 bac 30 42
a 18 22 bac 30 42