Заменить возможные фразы словом в sed? - PullRequest
1 голос
/ 30 января 2020

Я хочу иметь возможность заменить целые фразы, такие как:

white_phone
white; phone
white.phone
phone;white

, на одну фразу «ОТКЛОНИТЬ», основываясь на том, присутствует ли в фразе слово «белый». Я попытался использовать:

sed -e 's/*white*/REJECT/g' -e 's/*white/REJECT/g' -e 's/white*/REJECT/g' file

, но это только заменяет слово «белый» и оставляет остаток фразы, который я не хочу.

Фразы также разделены табуляцией, если это поможет.

Ответы [ 3 ]

2 голосов
/ 30 января 2020

Это даст вам желаемый результат, как я понимаю, вам нужно. Если это не так, приведите пример желаемого результата.

sed -i 's/.*white.*/REJECT/' file
0 голосов
/ 31 января 2020

Это может сработать для вас (GNU sed):

sed '/white/cREJECT' file
0 голосов
/ 30 января 2020

Для этого вам нужно использовать обратные ссылки sed:

sed -e 's/\(^.*\)white.*phone\(.*$\)/\1REJECT\2/g' -e 's/\(^.*\)phone.*white\(.*$\)/\1REJECT\2/g' < file 

Эта команда работает для меня с предоставленным вами вводом.

...