Использование sed для замены текста только в строках, которые соответствуют определенным критериям - PullRequest
1 голос
/ 02 декабря 2011

Я хочу иметь возможность заменить строку текста в файле, но не уверен, как это сделать с помощью sed.

Например, если у меня есть файл свойств:

food.type=apple 
food.color=red

Я хочу иметь возможность искать категорию (т.е. food.type) и заменять текст после =,т.е.

food.type=banana
food.color=yellow

Любая помощь очень ценится.Спасибо!

РЕДАКТИРОВАТЬ: Извините, позвольте мне добавить некоторые дополнительные разъяснения.Что если я не знаю, что за текст после food.type.Это может быть что угодно, «яблоко», «банан» и т. Д. ... Можно ли искать и заменять текст после =?

Ответы [ 4 ]

2 голосов
/ 02 декабря 2011

Может быть что-то более элегантное, но вы бы сделали это примерно так:

sed '/^food.type/ s/=.*$/=banana/'

Это найдет строку, начинающуюся с food.type, а затем заменит равенства и все, что следуетэто с = банан.

1 голос
/ 02 апреля 2012

Не просто "food.type" сейчас (и быть более безопасным :)):

$ sed -n 's/\([a-zA-Z]*\.[a-zA-Z]*=\).*$/\1banana/' filename
1 голос
/ 02 декабря 2011

обратные ссылки

sed 's/\(food.type=\).*/\1banana/'
1 голос
/ 02 декабря 2011
sed 's/food\.type=.*/food.type=banana/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...