sed + заменить строку / слово и игнорировать пробел после строки - PullRequest
1 голос
/ 24 ноября 2011

Я использую следующий синтаксис sed для замены строки часового пояса на # timezone

фактически команда sed заменяет ее, но в случае, если после строки часового пояса у нас есть один пробел или более, седан не заменяет ее

мой вопрос, что мне нужно изменить в синтаксисе sed для замены строки часового пояса в обоих случаях

  1. После строки часового пояса у нас нет пробела
  2. После строки часового пояса у нас есть пробел или больше

    sed -i '/timezone$/s/timezone/#timezone/' file
    

Ответы [ 3 ]

4 голосов
/ 24 ноября 2011

Вы можете попробовать:

sed -i.bak -r 's/timezone ?$/#timezone/' file

вам нужно добавить ? после пробела, что сделает пробел необязательным.Также вам придется добавить опцию -r, чтобы sed понимал расширенное регулярное выражение.

Также вы не указываете расширение для резервной копии после опции -i.

0 голосов
/ 25 ноября 2011

Это должно быть идеальным решением для обоих ваших случаев.

sed 's/timezone *$\|timezone/#&/' INPUT_FILE
0 голосов
/ 24 ноября 2011

Указав два случая как одно, вы хотите заменить «часовой пояс», за которым следует ноль или более пробелов, когда он находится в конце строки.Это должно быть так:

sed -i 's/timezone *$/#timezone/' file
...