我写了以下代码,其中:
$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的所有可能字符串组合创建的,即使它们是空的。有没有办法防止一般地创建空文件,或者我最后是否必须删除它们?
答案 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