2016-11-23 133 views
-1

在空格分隔文件fic.txt中,如果最後一個值爲'',則將其設置爲'0'。awk:僅當值爲NULL時將列值設置爲'0'

實施例:

'A' 'B' 'C' '' 'E' '' | 
'X' 'O' 'Y' 'T' 'W' '1' | 

'A' 'B' 'C' '' 'E' '0' | 
'X' 'O' 'Y' 'T' 'W' '1' | 

我嘗試:

awk '$6="\x27"0"\x27"' fic.txt - >要設置第6列的所有值爲 '0'。有用。

但仍然問題只設置爲'0'如果第6列是''。

感謝您的幫助。

+0

_if的最後一個值是 '' _ - 那是什麼'| '在真正的最後一場? –

回答

3
awk '$6=="\047\047" { $6="\047"0"\047"} 1' fic.txt 

我建議爲了學習AWK讀AWK導遊如thisthis

已更新:謝謝@Kent和@EdMorton的評論。

+1

你可以聲明一個var:'-v q =''「',然後在代碼中使用'q'。 – Kent

+1

總是使用八進制轉義序列,而不是十六進制。請參閱http://awk.freeshell.org/PrintASingleQuote。 –

0
sed "s/'' |/'0' |/" fil 
'A' 'B' 'C' '' 'E' '0' | 
'X' 'O' 'Y' 'T' 'W' '1' | 

基於文件的結構,所有線路與管道「|」的結局。簡單的sed搜索和替換將完成任務。要直接更改輸入文件,請使用-i-i.bak標誌與sed

0

在AWK使用sub更換'''是八進制\47)在 「最後一列」($6)與'0'

$ awk '{sub(/\47\47/, "\47" "0" "\47", $6)} 1' bar 
'A' 'B' 'C' '' 'E' '0' | 
'X' 'O' 'Y' 'T' 'W' '1' | 
相關問題