我試圖通過添加一些錯誤捕獲來修復bash腳本。我有一個文件(LIST.TXT),通常有這樣的內容:Bash命令查看文件的特定行是否爲空
People found by location:
person: john [texas]
more info on john
有時,文件被損壞,而且只能有一個第一行:
People found by location:
我試圖找到一種檢查該文件以查看第2行是否存在任何數據的方法,並且我想將其包含在我的bash腳本中。這可能嗎?
我試圖通過添加一些錯誤捕獲來修復bash腳本。我有一個文件(LIST.TXT),通常有這樣的內容:Bash命令查看文件的特定行是否爲空
People found by location:
person: john [texas]
more info on john
有時,文件被損壞,而且只能有一個第一行:
People found by location:
我試圖找到一種檢查該文件以查看第2行是否存在任何數據的方法,並且我想將其包含在我的bash腳本中。這可能嗎?
簡單幹淨:
if test $(sed -n 2p < /path/to/file); then
# line 2 exists and it is not blank
else
# otherwise...
fi
隨着sed
我們只提取第2行。只有在文件中有第二個非空行時,test
表達式纔會計算爲真。
我假設你想檢查給定文件的第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"
另一種方法,它不需要外部命令是:
if (IFS=; read && read -r && [[ -n $REPLY ]];) < /path/to/file; then
echo true
else
echo false
fi
聽起來你想檢查你的文件是否有超過1行
if (($(wc -l < filename) > 1)); then
echo I have a 2nd line
fi
'wc -l/path'會打印兩列,只有o其中ne是一個整數。 –
這可以說是乾淨的:'wc -l </ path' –
非常好,的確! (簡單,乾淨,......) – devnull