从另一个文件中删除文件中与文本不匹配的所有行

佩德罗·卡尔德拉(Pedro Caldeira)

我有2个带有几行的文本文件。我想删除文件1示例中没有文本的文件1中的所有行:

文件1

2345678  sdfsdfsdfsf 10.00 dirfkdkfsdf XP
2345679  sdfsdfsdfsf 10.00 dirfkdkfsdf XP
2345680  sdfsdfsdfsf 10.00 dirfkdkfsdf XP
2345681  sdfsdfsdfsf 10.00 dirfkdkfsdf XP
2345682  sdfsdfsdfsf 10.00 dirfkdkfsdf XP

文件2

2345678
2345679

我需要在file1中结束此操作

2345678  sdfsdfsdfsf 10.00 dirfkdkfsdf XP
2345679  sdfsdfsdfsf 10.00 dirfkdkfsdf XP

我必须在bash脚本中执行此操作,使用sed,awk等。我已经尝试过了,但是没有用

打印文件1中的所有记录

awk 'NR==FNR{a[$0];next} !($0 in a)' file2 file1

仅打印文件2

awk 'NR!=FNR{a[$0];next} !($0 in a)' file2 file1
卡拉法

如果文件已经通过密钥排序,则这是标准解决方案

$ join file1 file2

2345678 sdfsdfsdfsf 10.00 dirfkdkfsdf XP
2345679 sdfsdfsdfsf 10.00 dirfkdkfsdf XP

不能比这更简单。

如果您要awk解决方案,就可以了

$ awk 'NR==FNR{a[$1];next} $1 in a' file2 file1

2345678  sdfsdfsdfsf 10.00 dirfkdkfsdf XP
2345679  sdfsdfsdfsf 10.00 dirfkdkfsdf XP

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除Windows中另一个文本文件中存在的文本文件中的所有行?

从 bash 中删除与另一个文件中的行匹配的 CSV 文件中的行?

删除 CSV 文件中的所有行,而在另一个 CSV 文件中没有对应/匹配的时间戳

从另一个文件中删除包含字符串的文件中的所有行

从文件内部在另一个文件中的行匹配上方添加文本

如何从矩阵中删除与另一个向量中的值匹配的所有行?

Perl脚本使用另一个文件从一个管道分隔的文件中删除行具有一个匹配的列

如何使用notepad ++或TextCrawler删除多个文件中特定文本之前的所有文本行以及另一个特定文本之后的所有文本行?

如何使用grep / awk / unix将一个文件中的所有行匹配到另一个文件中,即使它们是重复的

awk / sed / grep删除与另一个文件中的字段匹配的行

从另一个文件中删除与特定模式匹配的行

删除行,该行与另一个文件中的特定标识符匹配

使用一个文件中的字段来查找另一个文件中的字段并打印与两个文件中的字段的所有匹配项

linux bash-从另一个目录中删除一个目录中的所有文件

如何从一个 Excel 列中删除与另一个 Excel 文件匹配的行?使用 VBA

如何使用sed / awk将某一行之后的文件中的所有文本替换为另一个文本文件的内容?

如何根据另一个文件中的名称从文件中获取所有匹配项?

根据可能与第一个文件中的特定列部分匹配的另一个文件中的模式,从文件中删除行

如何生成具有与另一个文件中的模式匹配的所有字符串的文件

从另一个文件中删除与模式匹配的文件中的值

如果前一行与另一个文本匹配,则替换文件中的文本

删除列中的值与另一个数据集中的列中的值不匹配的所有行

如何从带有换行符的文本文件中删除一行并将内容复制到另一个文件?

在另一个文件中匹配模式后,从文件内联插入文本

通过搜索另一个文件从文件中删除匹配的段落

循环使用sed。用一个文件中的文本替换另一个文件中的匹配模式

删除一个文件中的行与另一个文件中的行相匹配的最简单方法是什么?

如何根据另一个文件中的列表值从csv文件中删除行?

从文件中删除行,具体取决于在另一个文件中找到的行