我正在尝试通过添加错误捕获来修复一个Bash脚本。我有一个文件(list.txt),通常包含如下内容:
People found by location:
person: john [texas]
more info on john
有时候文件会受到损坏,只剩下第一行内容:
People found by location:
我正在寻找一种方法来检查文件,以查看第二行是否存在任何数据,并希望将其包含在我的bash脚本中。这可能吗?
我正在尝试通过添加错误捕获来修复一个Bash脚本。我有一个文件(list.txt),通常包含如下内容:
People found by location:
person: john [texas]
more info on john
People found by location:
我正在寻找一种方法来检查文件,以查看第二行是否存在任何数据,并希望将其包含在我的bash脚本中。这可能吗?
if test $(sed -n 2p < /path/to/file); then
# line 2 exists and it is not blank
else
# otherwise...
fi
使用sed
仅提取第二行。当文件中存在第二个非空白行时,test
表达式将只计算为真。
[ "$(sed -n '2p' inputfile)" != "" ] && echo "Something present on line 2" || echo "Line 2 blank"
[ "$(sed -n '$=' z)" == "1" ] && echo "Only one line" || echo "More than one line"
if (( $(wc -l < filename) > 1 )); then
echo I have a 2nd line
fi
另一种不需要外部命令的方法是:
if ( IFS=; read && read -r && [[ -n $REPLY ]]; ) < /path/to/file; then
echo true
else
echo false
fi
wc -l /path
会打印两列,其中只有一列是整数。 - William Pursellwc -l < /path
。 - William Pursell