我正在处理一个包含超过 200 万行的 CSV 文件。相当大的一个。
如果第二列的值与“jpn”或“por”匹配,我需要使用 grep(或任何更好的方法)来检索整行。
我尝试使用grep '<\jpn\>' || grep '<\por\>' file1.csv > file2.csv但到目前为止没有成功。主要问题是“por”在第三列中很常见,它会产生超过一百万的不需要的行。
有没有更有经验的用户会善待并借我一些帮助?
提前致谢!:D
aff*_*aff 13
你在什么 Linux 操作系统上?egrep如果您想在 grep 版本过时的系统(例如 Solaris)中使用正则表达式,请尝试使用。
无论如何,这是一个 awk 解决方案:
awk -F, '$2 ~ /jpn|por/ {print}' file1.csv > file2.csv
Run Code Online (Sandbox Code Playgroud)
说明:
awk 用于基于列的操作-F, 定义列分隔符/标记器,在这种情况下我使用逗号$2 ~ /jpn|por/ 用表达式测试第 2 列 /jpn|por/
$2 是第 2 列/jpn|por/ 是匹配 jpn 或 por 的正则表达式{print} 指定 awk 找到匹配行时应输出的内容
print打印整个输入行(或者,print $3只打印第 3 列)... file1.csv 指定从输入文件而不是标准输入读取| 归档时间: |
|
| 查看次数: |
16365 次 |
| 最近记录: |