如何删除文本文件中标记的相同行

如何删除文本文件中标记的相同行

我想删除文本文件 B 中混乱的选定相同行。在文件 A 中,相同的行在行首用 % 标记标记。如何通过命令行实现这一点。

例如:

file A contents AAA - 789 BBB - 456 % CCC - 980

file B contents AAA - 789 CCC - 980 BBB - 456

想要删除文件 B 中的 CCC-980。

答案1

使用终端中的命令,

sed -n '/^%/p' fileA.txt | awk '{print substr($0,3)}' > tmp.txt
grep fileB.txt -vf tmp.txt > modified_file.txt
rm tmp.txt

该文件modified_file.txt包含您想要的结果。您也可以在 shell 脚本中使用这些命令。

怎么运行的:

  • sed -n '/^%/p' fileA.txt输出是,% CCC - 980
  • sed -n '/^%/p' fileA.txt | awk '{print substr($0,3)}'生成CCC - 980,您要删除它。我已tmp.txt使用重定向将其存储在其中,以便它可以与多条线路一起工作。
  • grep fileB.txt -vf tmp.txt给出 fileB 中不包含在 中的部分tmp.txt。最后将其存储在modified_file.txt

建议的替代智能方法阿维纳什·拉杰

awk -v var=$(awk '$1=="%"{print $2}' fileA.txt) '$1==var{next;}1' fileB.txt

相关内容