2013-08-28 50 views
2

我試圖通過添加一些錯誤捕獲來修復bash腳本。我有一個文件(LIST.TXT),通常有這樣的內容:Bash命令查看文件的特定行是否爲空

People found by location: 
person: john [texas] 
more info on john 

有時,文件被損壞,而且只能有一個第一行:

People found by location: 

我試圖找到一種檢查該文件以查看第2行是否存在任何數據的方法,並且我想將其包含在我的bash腳本中。這可能嗎?

回答

2

簡單幹淨:

if test $(sed -n 2p < /path/to/file); then 
    # line 2 exists and it is not blank 
else 
    # otherwise... 
fi 

隨着sed我們只提取第2行。只有在文件中有第二個非空行時,test表達式纔會計算爲真。

+0

'wc -l/path'會打印兩列,只有o其中ne是一個整數。 –

+1

這可以說是乾淨的:'wc -l <​​/ path' –

+0

非常好,的確! (簡單,乾淨,......) – devnull

1

我假設你想檢查給定文件的第2行是否包含任何數據。

[ "$(sed -n '2p' inputfile)" != "" ] && echo "Something present on line 2" || echo "Line 2 blank" 

即使輸入文件只有一行,這也可以工作。

如果您只是想檢查是否inputfile中有一行或更多,你可以說:

[ "$(sed -n '$=' z)" == "1" ] && echo "Only one line" || echo "More than one line" 
0

另一種方法,它不需要外部命令是:

if (IFS=; read && read -r && [[ -n $REPLY ]];) < /path/to/file; then 
    echo true 
else 
    echo false 
fi 
1

聽起來你想檢查你的文件是否有超過1行

if (($(wc -l < filename) > 1)); then 
    echo I have a 2nd line 
fi 
相關問題