结合 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

相关内容