我有一个非常大的CSV文件。文件中的1行示例为:
1880,Mary,F,7065
我希望能够通过获取符合特定条件的所有条目来过滤我的文件,并将它们放在单独的文件中。例如,我希望能够做到这样的事情:
取第三个条目所在的所有行" Mary"并将这些行复制到一个新行。
我是怎么想用grep做这件事的?
答案 0 :(得分:0)
首先是一个更好的测试文件,带有正线和负线(对于第三个条目是“Mary”):
$ cat file
1880,Mary,F,7065
1880,Mary,Mary,7065
第三个条目为“Mary”的所有行使用grep
:
$ grep "^\([^,]*,\)\{2\}Mary" file
1880,Mary,Mary,7065
如果你想要更多规则,你可以使用OR(|
),例如在行上获得前一个OR F
:
$ grep "\(^\([^,]*,\)\{2\}Mary\|F\)" file
我会在grep
上使用awk,但是:
$ awk -F, '$3=="Mary" || /F/' file