2015-10-17 29 views
2

我得到的結果是「nothing」,我需要用「0」替換它。例如,我的文件有duse如下:Bash:用零代替「nothing」

duse  1 

awk打印1有:

surange < survey.su | grep duse | awk '{ print $2 }' 

因爲沒有delrt,代碼給出了該變量沒有結果:

surange < survey.su | grep delrt | awk '{ print $2 }' 

因爲delrt不存在。

我想補充的是,輸出重定向到一個文件:

surange < survey.su | grep delrt | awk '{ print $2 }' > value 

empty使用file後:

$ file value 
value: empty 

任何想法?感謝任何指針,

回答

1

grep不輸出任何東西,所以awk表情永遠不會運行。可以在END區塊中添加手動檢查。

surange < survey.su | grep delrt | awk '{print$2}END{if(NR==0)print 0}' 

如果沒有記錄已被讀取的if(NR==0)部分檢查(一個空文件),並相應地做出響應。

或者,整個事情可以在awk完成,設置一個標誌,如果找到匹配。

surange < survey.su | awk '/delrt/{print$2;f=1}END{if(!f)print 0}' 
+0

感謝kdhp,我也想過,但它不打印任何東西 – Gery

+0

現在它的工作原理,感謝很多kdhp,好的把戲。這對你的解決方案有很好的解釋。僅使用'awk'不起作用。 – Gery

+0

現在這兩個解決方案的工作,感謝kdhp。 – Gery