首页 > 解决方案 > Grep方法删除文件中与其他文件中的任何行匹配的所有行?

问题描述

我有一个相机信息文件,其中每一行都有一个唯一的格式 ID

{"_id":{"$oid":"5b0cfa5845bb0c0004277e13"},"geometry":{"coordinates":[139.751,35.685]},"addEditBy":["dd53cbd9c5306b1baa103335c4b3e91d8b73386ba29124ea2b1d47a619c8c066877843cd8a7745ce31021a8d1548cf2a"],"legacy_cameraID":1,"type":"ip","source":"google","country":"JP","city":"Tokyo","is_active_image":false,"is_active_video":false,"utc_offset":32400,"timezone_id":"Japan Standard Time","timezone_name":"Japan Standard Time","reference_url":"101.110.193.152/","retrieval":{"ip":"101.110.193.152","port":"80","video_path":"/"},"__v":0}

我还有一个要从原始文件中删除的相机 ID 列表,格式如下:

5b182800751c3b00044514a9
5b1976b473569e00045dba59
5b197b1273569e00045ddf0f
5b1970cc73569e00045d94fc

如何使用 grep 或其他命令行实用程序删除输入文件中具有第二个文件中列出的 ID 的所有行?

标签: bashfiletextgrep

解决方案


假设您有一个名为ids.txt的文件,其中包含需要从您的数据文件中排除的所有相机 ID,我们将其称为data.json. 我们可以使用-fgrep 选项(从文件匹配)和-v选项(只输出不匹配的行)如下:

grep -f ids.txt -v data.json 

grep只会输出data.jsonids.txt.


推荐阅读