用第一行填充空行

时间:2016-08-01 10:12:31

标签: linux bash awk

我有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中实现这一目标。

2 个答案:

答案 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