我编写了以下代码,其中:
$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 中所有可能的字符串组合创建的,即使它们是空的。有没有办法防止创建空文件,或者我必须在最后删除它们?
最佳答案
您可以使用 $(...) 捕获程序输出:
res=$(grep "$str1" "$1" | grep "$str2" | cut -d "," -f 6)
并使用 -n 测试,如果字符串为空:
if [[ -n $res ]]; then echo "$res" > "${str1}_${str2}.txt" ; fi
关于bash - 防止在 bash 中创建空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48611229/