2列の文字列を一致させ、AWKの数を印刷します。

2列の文字列を一致させ、AWKの数を印刷します。

21列のCSVファイルがあります。 2つの列から文字列を検索してから、発生の総数を計算したいと思います。

マイデータセットのサンプル

columnA     columnB    columnC  columnD
abc          Apple      Apple     today
nbd          apple      NULL      tomorrow
ccc          apple      Apple     today

ファイルから文字列を検索できます。しかし、2つの列でのみ文字列を検索したいと思います。私の検索は大文字と小文字を区別します(正確に一致)。

awk -F',' '/Apple/ {++count} END{print count}' Dataset.csv

列Bと列C($ 2&&$ 3)に検索を適用したいです。出力は3でなければなりません。

どんなヒントでも役に立ちます。ありがとう

ベストアンサー1

awk -F',' '$2 ~ /^Apple$/ {++count} $3 ~ /^Apple$/ {++count} END{print count}' Dataset.csv

または正確な一致が必要な場合は、==次の操作を行います~

awk -F',' '$2 == "Apple" {++count} $3 == "Apple" {++count} END{print count}' Dataset.csv

countで見つかったら追加されます。誰でも $2または$3

count両方で見つかった場合にのみ増やすには、次のようにします。

awk -F',' '$2 ~ /^Apple$/ && $3 ~ /^Apple$/ {++count} END{print count}' Dataset.csv

awk -F',' '$2 == "Apple" && $3 == "Apple" {++count} END{print count}' Dataset.csv

または(AND文字列x 2と一致するように2つのフィールドを連結):

awk -F',' '$2$3 ~ /^AppleApple$/ {++count} END{print count}' Dataset.csv

awk -F',' '$2$3 == "AppleApple" {++count} END{print count}' Dataset.csv

おすすめ記事