CSVファイルの2つの変数に一致する特定の行の列12の値を印刷する必要があります[閉じる]

CSVファイルの2つの変数に一致する特定の行の列12の値を印刷する必要があります[閉じる]

次の2つの変数を考えてみましょう。

DC="777777"
CountryCode="IN"

CSVファイルがあります。 2番目の列で変数名をfileSB.csv検索し、4番目の列で変数名を検索するコマンド(以下)を見つけました。両方の変数が同じ行で一致する場合にのみ、その特定の行が印刷されます。DCCountryCode

私の要件は、次のコマンドを使用して検出された同じ行/行の列12の値のみを印刷したいということです。ここでの問題は、列12に複数のカンマがある可能性があるため、列12の値を印刷できないことです。

ファイル名の2つの変数値に一致する行を印刷するコマンドは、fileSB.csv次のとおりです。

awk -v pat1="$DC" -v pat2="$CountryCode" -F, '($2==pat1&&$4==pat2)' fileSB.csv

要約:コンマ区切りの出力から12番目の列を取得する必要がありますawk。これには任意の数のカンマを含めることができ、その後に別の10列が続くことがあります。

答え1

以下の説明によると、列12にはさまざまな数のカンマ区切りの項目が含まれており、その後に10個の列があります。

awk -v pat1="$DC" -v pat2="$CountryCode" -F, '$2 == pat1 && $4 == pat2' fileSB.csv |
cut -d, -f 12- | rev | cut -d, -f 11- | rev

cutand呼び出しはrev最初に最初の11列を削除してからデータを反転し、最後の10列(最初の10列は反転)を削除してから戻ります。

関連情報