[英]Bash - fill empty cell with following value in the column
我有一個由制表符分隔的長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
我一直在修改其他線程(如awk解決方案)中的代碼,但問題是我想要的值不是在空單元格之前,而是在Excel中的.FillUp之后。
附加信息:
提前致謝。
$ 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
向后)反向打印文件。 反轉文件,填寫缺少的值,然后再次反轉。
只要您知道要填充的第一個值,就可以單次處理文件。 它應該比兩次反轉文件要快得多。
awk 'BEGIN {fillvalue="B"} $2 {fillvalue=$2=="A"?"B":"A"} !$2 {$2=fillvalue} 1' input.txt
請注意,這是假設有關第二列的性質的知識僅為“ A”或“ B”或空白。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.