Bash命令查看文件的特定行是否为空

Bash命令查看文件的特定行是否为空,bash,Bash,我试图通过添加一些错误捕获来修复bash脚本。我有一个文件(list.txt),通常包含以下内容: People found by location: person: john [texas] more info on john 有时该文件会损坏,并且只有第一行: People found by location: 我试图找到一种方法来检查该文件,以查看第2行是否存在任何数据,并希望将其包含在我的bash脚本中。这可能吗?简单明了: if test $(sed -n 2p <

我试图通过添加一些错误捕获来修复bash脚本。我有一个文件(list.txt),通常包含以下内容:

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-n2p

使用
sed
我们只提取第二行。只有当文件中有第二个非空行时,
test
表达式才会计算为true。

我假设您要检查给定文件的第2行是否包含任何数据

[ "$(sed -n '2p' inputfile)" != "" ] && echo "Something present on line 2" || echo "Line 2 blank"
即使inputfile只有一行,这也可以工作

如果只想检查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
if(IFS=;read&&read-r&[-n$REPLY]];)
听起来像是要检查文件中是否有多行

if (( $(wc -l < filename) > 1 )); then
    echo I have a 2nd line
fi
if($(wc-l1));然后
我有第二条线路
fi

wc-l/path
将打印两列,其中只有一列是整数。可以说这样做更简洁:
wc-l
谢谢你的提示!我还不能让它继续工作。。。它返回“第1行:测试:参数太多”。。我现在在试威廉的推荐。谢谢大家!!按照William的建议添加<介于-1和/之间的路径为我解决了这个问题。我对你说的太感谢了。干杯@我说了什么吗?事实上,您的编辑揭示了您的各种想法:)