输出重定向时不创建新文件

输出重定向时不创建新文件

我使用它进行输出重定向:

cat filename | grep 'dis' | wc -l > test.txt

但是如果 grep 命令未找到任何结果,我不希望创建零字节文件。

有什么办法可以实现这一点吗?

答案1

test.txt仅当行数非零时才会创建:

grep 'dis' filename | wc -l | { read line; [ "$line" != "0" ] && echo "$line"> test.txt; }

答案2

下面是一种AWK味道。

awk 'BEGIN {lc=0}; /dis/ {lc+=1}; END {if (lc > 0) print lc > "test.txt"}' filename

仅当找到至少一个匹配项时,才会创建“test.txt”。

相关内容