Я пытаюсь изменить город во всех записях и сохранить заголовок.
Что у меня есть:
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=","
Любая помощь будет принята с благодарностью [ 117]
Попробуйте:
$ 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 's/,Portland,/,Bend,/' file
Name,City,State
Bob,Bend,Oregon
Sue,Bend,Oregon
David,Bend,Oregon