2017-10-30 12 views
0

非常に大きなCSVファイルがあります。ファイル内の1行の例は次のとおりです。CSVファイルをグレープして別のファイルに出力する

1880,Mary,F,7065 

は私が一定の基準を満たしており、別のファイルに入れてすべてのエントリを取ることによって、私のファイルをフィルタリングすることができるようにしたいです。例えば、私は次のようなことをしたいと思っています:

3番目のエントリが "Mary"であるすべての行を取り出し、それらの行を新しい行にコピーします。

grepを使ってどのようにしたらよいでしょうか?

+2

それは完全にあなたの実際の基準に依存し、やっての複雑さはそれほど変化します。それはあなたが欲しいものですか? – HuStmpHrrr

答えて

0

まず、正および負の線とビットより良いテストファイル(3番目のエントリのためには、「メアリー」ある):

$ cat file 
1880,Mary,F,7065 
1880,Mary,Mary,7065 

使用して3番目のエントリは、「メアリー」であるすべての行grep

$ grep "^\([^,]*,\)\{2\}Mary" file 
1880,Mary,Mary,7065 

あなたはより多くのルールを希望する場合は、(|)を使用するか、またはしたい、例えば前回のか、単にFライン上を取得する:

$ grep "\(^\([^,]*,\)\{2\}Mary\|F\)" file 

でも、私はgrep上のawkを使用したい:

$ awk -F, '$3=="Mary" || /F/' file 
関連する問題