複数の.csvファイルから文字列を見つける方法

複数の.csvファイルから文字列を見つける方法

私のデスクトップのHWというフォルダに複数の.csvファイルがあり、cygwinを使用しており、特定の列で文字列を検索したいと思います。たとえば、X列では、ARDはコンテンツ値のヘッダーであり、trueまたはfalse、ARD = trueの数を探したいとします。

助けてください...

ベストアンサー1

キーワードが常に同じ列(列番号2など)にある場合は簡単です。

cut -d, -f 2 file(s) | grep -c 'true'

つまり、列2を切り取り(-f 2)、 "、"をフィールド区切り文字として使用し(-d、)、すべてのtrueを取得し(grep)カウントを計算します(-c)。

もっと複雑にするには、「ARD」列を検索する必要がある場合

awk  'BEGIN {FS = ","}  ; FNR == 1 { for ( i=1 ; i<=NF ; i++ ) { if ( $i=="ARD" ) { col=i } } } ; FNR >= 2 { print $col }' file(s) | grep -c 'true' 

1)BEGIN { FS = "," }各ジョブ(BEGIN)の前にカンマを","フィールド区切り記号(FS=)として使用します。

2)ファイルの最初の行(つまり、ヘッダー行)の場合(FNR == 1)すべての列に対して(for ( i=1 ; i<=NF ; i++ ))文字列 "ARD"がこの列にあることを確認します(if ( $i=="ARD"))。その場合は、変数をcol列番号に設定します。{ col=i }

3)これで列番号がわかったので、ファイルの最初の行(=ヘッダー)(つまり、2より大きいすべての行)を省略してその列を印刷しますFNR >= 2 { print $col }。ここではcol、以前に定義した変数を使用します。

grep4) -c"true" 発生回数を ( ) カウントしてパイプ出力

5)ファイル別リストの場合は、bashスクリプトでforループを使用します。

おすすめ記事