#bash #sed
#bash #sed
Вопрос:
Я хочу удалить блок текста в файле.
файл
.
.
.
"chromedriver": {
"version": "80.0.2",
.
.
.
}
},
"ci-env": {
.
.
.
Я хочу удалить атрибут chromedriver, который определяется в нескольких строках.
Я пробовал это:
sed -i 's/"chromedriver"(s|n|.)*"ci-env":/"ci-env":/g' file
но это не работает. Есть oneliner, который может решить мою проблему? Может ли sed это сделать?
Комментарии:
1. это json-файл? можете ли вы показать больше контента? в любом случае, при работе с json,
jq
гораздо лучше подходит, чемsed
,awk
и другие линейно ориентированные инструменты unix.
Ответ №1:
Использование jq
, которое, как упоминалось в комментарии, является лучшим подходом для работы с JSON:
jq 'del(.chromedriver)' file > file.tmp amp;amp; mv -f file.tmp file
(Угадайте соответствующий путь здесь, потому что данные вашего примера слишком отрывочны)
Ответ №2:
Редактирование на помощь!
#!/bin/sh
cat >> edcut.txt << EOF
/chromedriver/
ka
/ci-env/
-1
kb
'a,'bd
wq
EOF
ed -s file.json < edcut.txt
если вы хотите извлечь запись в другой файл, замените ‘a’, bd на ‘a’,bW newfile.txt .