Страница 1 из 1

Замена строк в файле с помощью скрипта

Добавлено: 13 апр 2022, 11:08
ogankvik
Linux Mint 19.3 x64 Cinnamon.

Здравствуйте. Есть файл в котором при каждом запуске нужно менять две строки. Создал скрипт, но он не работает. Подскажите, как правильно сделать замену строк?

В файле config.json есть две строки:

Код: Выделить всё

"focused": true,
"visible": true,
Нужно сделать скрипт, меняющий эти строки на :

Код: Выделить всё

"focused": false,
"visible": false,
Создал скрипт:

Код: Выделить всё

#!/bin/bash
sed 's/"focused": true,/"focused": false,/2' config.json
sed 's/"visible": true,/"visible": false,/2g' config.json
exit 0
Но он не меняет строки. Что я делаю не так? Помогите пожалуйста.

Замена строк в файле с помощью скрипта

Добавлено: 13 апр 2022, 11:44
Sharov
sed -e "s/$old_pattern/$new_pattern/g" $file_name
...
Яндекс в помощь:
https://www.opennet.ru/docs/RUS/bash_sc ... 14586.html

Замена строк в файле с помощью скрипта

Добавлено: 13 апр 2022, 12:11
rogoznik
ogankvik, собственно ты был близок, но то ли читал невнимательно, то ли статья такая попалась.
Должно быть так

Код: Выделить всё

#!/bin/bash
sed -i 's/"focused": true,/"focused": false,/' config.json
sed -i 's/"visible": true,/"visible": false,/' config.json
exit 0
Флаг g есть смысл использовать, если таких строк несколько и надо заменить в каждой, т.е. глобально(во всем файле). Без этого флага будет заменено только в первой попавшейся строке
Ключ -i говорит sed что надо изменения писать в файл, а не в stdout

Замена строк в файле с помощью скрипта

Добавлено: 13 апр 2022, 12:20
ogankvik
Большое спасибо! Пару минут назад тоже сообразил, что замена отлично работает, но только в консоли, не сохраняя результат в файл :). Проблема решена!