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.txt
output é,% CCC - 980
-
sed -n '/^%/p' fileA.txt | awk '{print substr($0,3)}'
produzCCC - 980
, que você deseja remover. Eu o armazenei emtmp.txt
usando o redirecionamento para que possa trabalhar com várias linhas. -
grep fileB.txt -vf tmp.txt
fornece 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