我正在while循环中比较多个文件,并将输出存储在新文件中。
我在做下面的事情
while IFS='|' read -r work_table_name final_table_name;do
comm -23 <(sort /home/$USER/work_schema/${work_table_name}_work_schema.txt) <(sort /home/$USER/final_schema/${final_table_name}_final_schema.txt) > /home/$USER/mismatched_schema/${final_table_name}.txt
done < /home/$USER/tables.txt
我正在得到想要的东西。但是只需要整个while
循环的一点结果即可。
我只想在文件之间不匹配时创建文件。如果没有不匹配的地方,那就根本不要创建文件。
我该如何实现?
答案 0 :(得分:1)
但是只需要整个while循环的结果。
因此,重定向整个while循环输出:
while read -r ....; do
comm -23 <(...) <(...)
done < input > output
或追加:
# this will truncate the output file, so we start empty
: > output
while read -r ....; do
comm -23 <(...) <(...) >> output
done < input
我基本上不想在比较两个文件时创建一个空文件
所以请检查它是否为空...
out=$(comm -23 <(....) <(....))
if ((${#out} != 0)); then
printf "%s" "$out"
fi