/data_directory = /var/lib/postgresql/10/main/
Команда фильтра работает как /string/
.В строке, которую вы хотите отфильтровать, есть несколько /
символов - вам нужно их экранировать.Попробуйте:
/data_directory = \/var\/lib\/postgresql\/10\/main/
\/
сообщает awk
, что это /
не является концом команды фильтра, но является частью строки для фильтрации.
sudo awk '/data_directory = \/var\/lib\/postgresql\/10\/main/ { print "data_directory = someDir/postgresql/10/main"; next }1' /home/ubuntu/postgresql.conf
Однако я бы, вероятно, согласился с:
awk -v VAR="someDir/postgresql/10/main" '/^data_directory = /{ print "data_directory = ",VAR; next; }1'
Пример можно найти на tutorialspoint .