列値に基づいてCSVファイルから行を選択する

列値に基づいてCSVファイルから行を選択する

プロジェクト名、値、説明、コンポーネントの4つの列を含むCSVファイルがあり、ファイルはかなり大きいです。

上記のCSVファイルからコンポーネントを指定する行のみを表示するテンプレートを作成する必要があります(例:検索基準であるコンポーネント= 'abc')。

答え1

組み込みのコンマがないと仮定すると、awkはこれに適しています。

awk -F , '$4 == "abc" { print }' input.csv

答え2

csvkit:の他のツールを使用しましたcsvgrep

$ csvgrep -c 4 -m "abc" data.csv > test.csv

ファイルの結果内容は次のとおりですtest.csv

Itemname,Value,Description,Component
33,34,35,abc

-c表示する列を指定します。タイトルも使用できます。スペルがまったく同じであることを確認してください。大文字が重要です。

$ csvgrep -c Component -m "abc" data.csv > test.csv

Itemname,Value,Description,Component
33,34,35,abc

そして-mマッチングパターンです。マッチングに深く入りたい場合は、正規表現を使用してこれを行う方法があると確信しています。その後、というファイルに保存されますtest.csv

答え3

以下の内容がありますdata.csv

Itemname,Value,Description,Component
1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16
17,18,19,20
21,22,23,24
25,26,27,28
29,30,31,32
33,34,35,abc
37,38,39,40
41,42,43,44
45,46,47,48
49,50,51,52
53,54,55,56
57,58,59,60
61,62,63,64
65,66,67,68
69,70,71,72
73,74,75,76
77,78,79,80
81,82,83,84
85,86,87,88
89,90,91,92
93,94,95,96
97,98,99,100

使用csvkit:

$ csvsql --query "SELECT * FROM data WHERE Component = 'abc'" data.csv
Itemname,Value,Description,Component
33,34,35,abc

関連情報