如何用VSCode或Mac终端筛选file1.csv中含file2.csv内容的行
保留CSV文件中包含指定内容的行
VSCode 操作方法
方法1:筛选复制匹配行
- 打开
file2.csv,复制所有内容(示例中是4321和1234两行) - 将复制的内容处理成
|分隔的字符串,比如4321|1234(如果内容包含正则特殊字符,比如.或*,需要在字符前加\转义) - 打开
file1.csv,按下Cmd + F调出文件内搜索,点击搜索框右侧的.*图标启用正则表达式 - 在搜索框输入:
^.*(4321|1234).*$,替换成你处理后的分隔字符串 - 点击搜索框右侧的「Find All」,所有匹配的行会被选中
- 右键选中内容,选择「复制」,新建文件粘贴后保存即可
方法2:删除不匹配行
- 按上述步骤处理得到
4321|1234这样的匹配字符串 - 在
file1.csv的搜索框输入:^(?!.*(4321|1234)).*$(反向匹配不包含指定内容的行) - 替换框留空,点击「Replace All」,即可删除所有不符合条件的行
Mac终端 命令行方案
直接用grep命令快速完成筛选,无需打开编辑器:
grep -F -f file2.csv file1.csv > filtered_file1.csv
参数说明:
-F:将file2.csv中的每一行作为固定字符串匹配,避免正则特殊字符干扰-f file2.csv:从file2.csv读取匹配规则,每一行对应一个匹配项> filtered_file1.csv:将筛选结果输出到新文件,不会修改原file1.csv
如果需要直接覆盖原文件(操作前建议备份),可以先安装moreutils工具包(brew install moreutils),再执行:
grep -F -f file2.csv file1.csv | sponge file1.csv
内容的提问来源于stack exchange,提问作者Thomas Larsen
相关产品推荐
相关产品推荐

