我有两个文件,其中一个有数据文件1:
content
file2是用vi创建的,我只是放了一些进入并有两三行,但仍然没有数据只是内容。
当我添加行但没有其他内容时,这对我不起作用。
if [ ! -s file2 ]
print "file2 is empty"
else
print "file2 has content"
fi
在这种情况下,转:file2有内容
这个想法是要抓住那个文件中是否有任何字母或数字,如空格或输入为空。
答案 0 :(得分:5)
if perl -ne'exit 1 if /\S/' file ; then
echo 'Only contains blank lines'
fi
来想一想,grep
也可以做到这一点。
if ! grep -q '[^[:space:]]' file ; then
echo 'Only contains blank lines'
fi
这些比anubhava的解决方案更好,因为他们认为只包含空格和制表符的行是空白行。为尾随空格分配显着性永远不是一个好主意。
答案 1 :(得分:3)
您可以使用$(<file2)
来检查零内容文件:
if [[ -z "$(<file2)" ]]; then
print "file2 is empty"
else
print "file2 has content"
fi
[[ -z "$(<file2)" ]]
仅适用于零内容文件或仅包含新行的文件
答案 2 :(得分:1)
awk way
awk 'NF{x++}END{print x?"File has content":"File empty"}' file
当以这种方式找到内容时,您也可以停止处理文件
awk 'x+=NF{exit}END{print x?"File has content":"File empty"}' file