Use os comandos em um terminal
sed -n '/^%/p' fileA.txt | awk '{print substr($0,3)}' > tmp.txt
grep fileB.txt -vf tmp.txt > modified_file.txt
rm tmp.txt
O arquivo modified_file.txt contém os resultados desejados. você pode usar esses comandos em um script de shell também.
Como funciona:
-
sed -n '/^%/p' fileA.txtoutput é,% CCC - 980 -
sed -n '/^%/p' fileA.txt | awk '{print substr($0,3)}'produzCCC - 980, que você deseja remover. Eu o armazenei emtmp.txtusando o redirecionamento para que possa trabalhar com várias linhas. -
grep fileB.txt -vf tmp.txtfornece a parte do arquivo B que não está contida emtmp.txt. Finalmente, armazenou emmodified_file.txt
Método inteligente alternativo sugerido por AvinashRaj :
awk -v var=$(awk '$1=="%"{print $2}' fileA.txt) '$1==var{next;}1' fileB.txt