значение Б, но как тогда там заменить строку в которой есть А на значение Б?
sed 's/^\"email\": \'*\'/\"email\": \'mail@email.com\' /g' -i /path/to/file ?
это точно строки, а не json?
sed "/\"email\"/s#'.*'#'moo@foo.bar'#"
Ещё вопрос: чуть дописал и привёл к виду: echo $tempusr $tempmail | xargs -l bash -c 'sed "/\"email\"/s#'.*'#'$1'#" -i ~/test.txt' В $tempmail лежит строка Но после запуска команды, строка с email удаляется из файла. Пример: [user@host ~]$ echo $tempmail baobaba [user@host ~]$ cat ~/test.txt "email": 'anus@bepis.com' "ass": 'bepis' [user@host ~]$ echo $tempusr $tempmail | xargs -l bash -c 'sed "/\"email\"/s#'.*'#'$1'#" -i ~/test.txt' [user@host ~]$ cat ~/test.txt "ass": 'bepis' [user@host ~]$
может, вместо "echo | xargs" лучше переменные сразу руками в вызов sed'а подставить?
ну и проблема может быть из-за одинарных кавычек. С ними всегда беда. Они и не экранируются и не вкладываются друг в друга
Т.Е. убрать всё, кроме sed?
Обсуждают сегодня