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

时间:2013-08-28 16:02:42

标签: bash

我正在尝试通过添加一些错误捕获来修复bash脚本。我有一个文件(list.txt)通常有这样的内容:

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

有时该文件已损坏,并且只有第一行:

People found by location:

我正在尝试找到一个检查该文件的方法,以查看第2行是否存在任何数据,并且我想将其包含在我的bash脚本中。这可能吗?

4 个答案:

答案 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