我有像
这样的文件A 1 2
A 1
A 1
B 2 3
B 2
B 2
我想将所有A中的2复制1.即if($ 1 =“A”&& $ 2 == 1)打印值为$ 3。 我尝试使用awk但无法获得结果。
结果可能是
A 1 2
A 1 2
A 1 2
B 2 3
B 2 3
B 2 3
提前感谢你
答案 0 :(得分:2)
根据示例和您的代码,这可能会对您有所帮助:
awk 'NF==3{a[$1,$2]=$3}NF<3{$3=a[$1,$2]}7' file
答案 1 :(得分:1)
以下是应该执行的小awk
:
awk '$3!="" {t=$3} {$3=t} 1'
A 1 2
A 1 2
A 1 2
B 2 3
B 2 3
B 2 3
或者这个:
awk '$3 || $3=="0" {t=$3} {$3=t} 1' file
答案 2 :(得分:0)
尝试awk '{$3 == ""{print $0, var; next} {var=$3; print}' myfile
请注意,这仅适用于您的格式,并且仅当文件的第一行至少有第3列
时由于我不知道验证对您的脚本至关重要,因此不会检查第二个字段的有效性(即即使您有2
,这也会附加A 5
),也不检查第一个(即,有这样的文件:
A 1 2
B 2
将输出
A 1 2
B 2 2
但是,如果您将其与形成的文件一起使用,就像您展示的那样,它将完全按照您的意愿工作。如果你添加
,这甚至可以工作C 3 4
C 3
...