Вот как выглядит мой файл BookDB.txt:
Red:Blue:12:197:101
Я ввел эту команду в приглашение:
awk -F: '$1=="Red"{$2="Black"}1' BookDB.txt >> tmp && mv tmp BookDB.txt
И это изменения в моем файле:
Red Black 12 197 101
Проблема в том, что я хочу, чтобы команда сохраняла разделитель полей как «:», но команда меняет разделитель полей на пробел. Единственное поле, которое я хочу изменить, это второе поле с именем «Синий» на «Черный». Есть ли способ сохранить разделитель как «:»?
Это результат, который я хотел:
Red:Black:12:197:101
РЕДАКТИРОВАНИЕ:
read -p "Title of the old book: " title
read -p "Title of the book you want to update: " title_Update
awk -F: -vOFS=":" '$1=="$title"{$1="$title_Update"}1' BookDB.txt
-vOFS=":"
должен сделать это, в будущем обращайтесь к справочной странице, где это четко описано. - person 123   schedule 19.01.2016-vTitle="$title"
и т. д. Опять же, это можно узнать, просто выполнив поиск вашей проблемы, например, как использовать переменные оболочки в awk - person 123   schedule 19.01.2016v
и именем переменной, вы делаете свой сценарий совершенно излишне специфичным для gawk. Просто используйте-v var=val
, а не-vvar=val
. - person Ed Morton   schedule 19.01.2016