次の2つの変数を考えてみましょう。
DC="777777"
CountryCode="IN"
CSVファイルがあります。 2番目の列で変数名をfileSB.csv
検索し、4番目の列で変数名を検索するコマンド(以下)を見つけました。両方の変数が同じ行で一致する場合にのみ、その特定の行が印刷されます。DC
CountryCode
私の要件は、次のコマンドを使用して検出された同じ行/行の列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
cut
and呼び出しはrev
最初に最初の11列を削除してからデータを反転し、最後の10列(最初の10列は反転)を削除してから戻ります。