我有一个很长的制表符分隔的CSV文件,我试图在单元格中粘贴稍后列的值。 例如,input.txt:
0
1
1.345 B
2
2.86 A
3
4
我想输出如下:
0 B
1 B
1.345 B
2 A
2.86 A
3 B
4 B
我一直在修补其他线程中的代码,例如this awk solution,但问题是我想要的值不是在空单元格之前,而是之后,Excel中的.FillUp类型。
其他信息:
提前致谢。
答案 0 :(得分:4)
$ tac input.txt | awk -v V=B '{if ($2) V=$2; else $2=V; print}' | tac
0 B
1 B
1.345 B
2 A
2.86 A
3 B
4 B
tac
(cat
向后)反向打印文件。反转文件,填写缺失的值,然后再将其反转。
答案 1 :(得分:0)
只要您知道要填充的第一个值,就可以一次处理文件。它应该比反转文件快两倍。
awk 'BEGIN {fillvalue="B"} $2 {fillvalue=$2=="A"?"B":"A"} !$2 {$2=fillvalue} 1' input.txt
请注意,这假设知道第二列的性质仅仅是' A'或者' B'或空白。