Зачем использовать ~
, если вы знаете строку заранее? Вы можете сделать буквальное совпадение строк. Также обратите внимание, что в строке совпадения есть опечатка, у Station
есть заглавная буква S
.
Ниже приведена упрощенная версия вашей попытки без явного условия if
внутри части действия {..}
. Преимущество этого состоит в том, чтобы игнорировать обработку любых других строк , а не , содержащих $4
с ожидаемой строкой. {..}1
просто перезапишет вашу строку на основе изменений значений столбцов и разделителей ввода / вывода.
awk -v FS="|" 'BEGIN { OFS = FS } $4 == "DiskStation Manager" { $3 = $4 }1'
Или, если вы используете подход регулярного выражения, поместите якоря вокруг строки, чтобы получить точное совпадение,
$4 ~ /^DiskStation Manager$/