簡體   English   中英

重擊-在列中用以下值填充空單元格

[英]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之后。

附加信息:

  • 輸入文件的行數可能不同
  • 輸入文件中的“ A”和“ B”可能在不同的行中並且沒有均勻地分開
  • 第二列可能只有兩個值
  • 第二列中的最后一個單元格可能沒有值
  • [edit]對於input.txt的最后兩行,已知B位於第二列,因為2.86之后的所有行都不是A。

提前致謝。

$ 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

taccat向后)反向打印文件。 反轉文件,填寫缺少的值,然后再次反轉。

只要您知道要填充的第一個值,就可以單次處理文件。 它應該比兩次反轉文件要快得多。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM