我正在尝试更改所有记录中的城市并保留标题。
我拥有的:
Name,City,State
Bob,Portland,Oregon
Sue,Portland,Oregon
David,Portland,Oregon
我想要的是:
Name,City,State
Bob,Bend,Oregon
Sue,Bend,Oregon
David,Bend,Oregon
我已尝试过:
awk -F',' 'NR>1 $2 == "Portland" {$2 = "Bend";print}' OFS=","
任何帮助将不胜感激
答案1
尝试:
$ awk -F',' 'NR>1 && $2 == "Portland" {$2 = "Bend"} {print}' OFS="," file
Name,City,State
Bob,Bend,Oregon
Sue,Bend,Oregon
David,Bend,Oregon
或者,使用通常的 awk 简写:
awk -F',' 'NR>1 && $2 == "Portland" {$2 = "Bend"} 1' OFS="," file
笔记:
当您有两个条件(例如
NR>1
和)$2 == "Portland"
并且您希望同时应用它们时,它们需要用逻辑与来结合起来:&&
。您希望打印所有行,但 awk 默认不打印。因此,我们将打印命令移至单独的组,以便它适用于所有行。
替代方案:使用 sed
使用 sed,我们可以得到相同的结果:
$ sed 's/,Portland,/,Bend,/' file
Name,City,State
Bob,Bend,Oregon
Sue,Bend,Oregon
David,Bend,Oregon