我有一个 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