由于电源故障问题,我不得不清理基于文本文件运行的作业。所以问题是,我有一个带有这样字符串的文本文件(它们是 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 中是否有一种有效的方法。
任何提示都会很好。
这是一个潜在的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] 删除。
我来说两句