Вам нужно явно распечатать, чтобы увидеть любой вывод:
Обычная идиома awk - добавить 1
после действия:
$ awk '{sub(/^KeyWordName[[:blank:]]=[[:blank:]].*$/, "KeyWordValueBB")}1' file
{commented out line} KeyWordName = KeyWordValueAA
KeyWordValueBB
1
всегда и, поскольку соответствующего действия нет, выполняется действие по умолчанию print
(для всех строк ввода).
Или вы можете просто использовать print
:
$ awk '{sub(/^KeyWordName[[:blank:]]=[[:blank:]].*$/, "KeyWordValueBB")} {print}' file
{commented out line} KeyWordName = KeyWordValueAA
KeyWordValueBB
Чтобы изменить файл, когда у вас нет опции -i
, сохраните его во временный файл и переименуйте его в свой файл (в любом случае это то, что -i
делает для вас). Используя &&
, мы уверены, что команда mv
будет выполнена только в случае успешного завершения awk
. Тем не менее, вы можете сначала сохранить копию исходного файла на случай, если awk
"успешен" с точки зрения ОС, но не выполняет то, что вы ожидали!
awk '{ ... }' file > tmp && mv tmp file