ifとforを結合するAwkコマンド

ifとforを結合するAwkコマンド

20列のcsvファイルがあります。ファイルの最初の部分は地理的位置情報です。私がしたいのは、特定の記録の地理位置データを見つけることです。まず、ユーザ「ROSA」が識別されたかどうか。行の最初の10列を検索し、その中に「GeoLocation」を含む列がある場合は、行全体ではなく次のレコードのみを印刷します。

awk  -F"," '($0~/ROSA/) {for(i=1;i<=10;i++) {($i~/GeoLocation/) print $(i+1)}}' filename.csv

上記の行を調べましたが、印刷物の「p」に構文エラーが表示されました。

私が何を見逃しているのかを理解できますか?

答え1

この試み: awk -F"," '($0~/ROSA/) {for(i=1;i<=10;i++) {if ($i~/GeoLocation/) print $(i+1)}}' filename.csv
また、「You Know field number」のROSAに対して行全体を検索しないか、少なくとも正規表現に区切り文字を含めて部分文字列と一致しないようにします。
また、次のレコード(次の行全体になる)を印刷したくないが、次のフィールドは...

答え2

から始めましょう

awk  -F"," '($0~/ROSA/) {for(i=1;i<=10;i++) {($i~/GeoLocation/) print $(i+1)}}' filename.csv

到着

awk  -F"," '($0~/ROSA/) {for(i=1;i<=10;i++) {if($i~/GeoLocation/) {print $(i+1)}}}' filename.csv

関連情報