如果在 bash 中找到字符串(来自另一个文本文件),则删除 csv 文件中的行

AJW

由于电源故障问题,我不得不清理基于文本文件运行的作业。所以问题是,我有一个带有这样字符串的文本文件(它们是 uuid):

out_file.txt(约 300k 个条目)

<some_uuidX>
<some_uuidY>
<some_uuidZ>
...

和这样的csv:

in_file.csv(约 500k 个条目)

/path/to/some/location1/,<some_uuidK>.json.<some_string1>
/path/to/some/location2/,<some_uuidJ>.json.<some_string2>
/path/to/some/location3/,<some_uuidX>.json.<some_string3>
/path/to/some/location4/,<some_uuidY>.json.<some_string4>
/path/to/some/location5/,<some_uuidN>.json.<some_string5>
/path/to/some/location6/,<some_uuidZ>.json.<some_string6>
...

我想从 out_file 中删除与 in_file 匹配的条目的行。最终结果:

/path/to/some/location1/,<some_uuidK>.json.<some_string1>
/path/to/some/location2/,<some_uuidJ>.json.<some_string2>
/path/to/some/location5/,<some_uuidN>.json.<some_string5>
...

由于文件大小相当大,我想知道在 bash 中是否有一种有效的方法。

任何提示都会很好。

jared_mamrot

这是一个潜在的grep解决方案:

grep -vFwf out_file.txt in_file.csv

还有一个潜在的awk解决方案(可能更快):

awk -F"[,.]" 'FNR==NR { a[$1]; next } !($2 in a)' out_file.txt in_file.csv

注意,每种方法都有一些警告。尽管它们似乎都适合您的预期目的(如您的评论“数字相加正确”所示),但在未来的问题中发布一个最小的、可重复的示例是帮助我们帮助您的最佳方式。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果在写入CSV文件时不存在子目录,该如何创建子目录?

如果在R的另一个列表中找到ID,则删除数据框的行

如果在另一个表中引用了行,则防止软删除

如果在.txt文件中未找到任何行,则打印一次

如果在另一个列表中找到特定属性,则从列表中删除元素

Python或bash脚本:如果在两个相同标记之间的行中有图案,请删除行和第一个标记

如果在文本文件中的两个不同字符之间,则为Python

如果在CSV列中找到术语,则删除行

如果在bash控制台的同一行上有多个命令,如何输入sudo密码

如果在file2中找不到文件1中的grep行

如果在一行中找到特定模式,则查找并替换字符串

如果在该文本文件中找到了输入的int,如何从Java中的导入文本文件打印一行?

如果在Bash中,则进行变量比较

如果在测试文件中找到字符串,如何使dos中的find命令失败?

awk - 如果特定列包含来自另一个文本文件的元素作为子字符串,则删除一行

如果在 Ubuntu 中,则使用 bash 文件检查已安装的应用程序

如果在另一个内存表中,则从内存表中删除

颜色字如果在字符串中

如果在 Python 中的 txt 文件中声明?

如果在 bash 中包含特定文件名,则仅列出目录

如果在另一个表中不匹配则删除

如果在laravel中删除了表数据行,如何删除文件?

如果在python中找到匹配项,如何更新另一个文件

如果/否则如果在 R 中的文本列上

如果在另一个 CSV 文件中找到行值,则从 CSV 文件中过滤行

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

如果在bash的文本文件中找不到記錄,如何循環讓用戶重新輸入?

如果在另一列中满足条件,则使用 sed 替换 csv 列中的值

Pandas - 如果在列表中找到重复行并计数