我正在尝试通过添加一些错误捕获来修复bash脚本。我有一个文件(list.txt)通常有这样的内容:
People found by location:
person: john [texas]
more info on john
有时该文件已损坏,并且只有第一行:
People found by location:
我正在尝试找到一个检查该文件的方法,以查看第2行是否存在任何数据,并且我想将其包含在我的bash脚本中。这可能吗?
答案 0 :(得分:2)
简单干净:
if test $(sed -n 2p < /path/to/file); then
# line 2 exists and it is not blank
else
# otherwise...
fi
使用sed
我们只提取第二行。仅当文件中存在第二个非空行时,test
表达式才会计算为真。
答案 1 :(得分: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"
答案 2 :(得分:1)
听起来你想检查一下你的文件是否超过1行
if (( $(wc -l < filename) > 1 )); then
echo I have a 2nd line
fi
答案 3 :(得分:0)
另一种不需要外部命令的方法是:
if ( IFS=; read && read -r && [[ -n $REPLY ]]; ) < /path/to/file; then
echo true
else
echo false
fi