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