防止在bash中创建空文件

时间:2018-02-04 17:52:30

标签: bash grep

我写了以下代码,其中:

  • $1 =输入.csv文件
  • $2 =要在$1
  • 中搜索的字符串列表
  • $3 =要在$2
  • 中搜索的不同字符串列表
while read str1
do
    while read str2
    do
     grep $str1 $1 | grep $str2 | cut -d "," -f 6 > ${str1}_${str2}.txt
    done < $3
done < $2

它基本上做了我想要它做的事情(从单独的输入文件中搜索两个不同的字符串,提取包含两个字符串的行的字段6并将字段6的内容写入结果文件)。 但是,当然,结果文件是为$ 2和$ 3的所有可能字符串组合创建的,即使它们是空的。有没有办法防止一般地创建空文件,或者我最后是否必须删除它们?

1 个答案:

答案 0 :(得分:2)

您可以使用$(...):

捕获程序输出
res=$(grep "$str1" "$1" | grep "$str2" | cut -d "," -f 6)

并使用-n test,如果String为空:

if [[ -n $res ]]; then echo "$res" > "${str1}_${str2}.txt" ; fi