2015-03-29 3 views
0

У меня есть вход в/и т.д./хостов:Заменить несколько пробелов, начиная строку с SED

127.0.0.1 fake.hostname.net fake 

Я хочу, чтобы заменить второй fake с real. Следующий СЕПГ оператор пытается фильтровать две части путем сопоставления двух пространств и раньше, но он ничего не делает:

sed -i -e 's/ fake/ new/g' /etc/hosts 

Результат является:

127.0.0.1 fake.hostname.net fake 

Ожидаемый результат:

127.0.0.1 fake.hostname.net new 

I также попробовали следующие результаты с такими же результатами:

sed -i -e 's/\s\sfake/\s\snew/g' /etc/hosts 

Почему это происходит, и что я могу сделать, чтобы исправить это? Я запускаю сервер Ubuntu 14.04.1. Я не хочу, чтобы просто заменить второй матч, как я ожидал что-то вроде:

127.0.0.1 asdf.hostname.net fake 

, так что согласующее пространства является единственным приемлемым методом.

echo "127.0.0.1 fake.hostname.net fake" | sed -e 's/ fake/ new/g' 

Возвращает ожидаемый результат, но тот же оператор не записывает файл. Просто не помещая лишние пробелы в записи оператора в файл, так что это не проблема с разрешениями файловой системы.

+0

Вы можете подтвердить, что выражение работает как ожидалось, если вы используете 'cat':' cat/etc/hosts | sed -e 's/fake/new/g''? также, убедитесь, что пробелы - это, по сути, пробелы, а не вкладки? –

+0

@WilliBallenthin Он делает: 'echo" 127.0.0.1 fake.hostname.net fake "| sed -e 's/fake/new/g'' и да, это пробелы, а не вкладки. Если я не помещаю пробелы в выражение, файл обновляется, поэтому это не проблема. Stack Overflow запускает двойное пространство даже при форматировании кода. – vemacs

ответ

1

Это должно быть

sed -i 's/fake$/real$/' /etc/hosts 

$ соответствует концу строки. Вам не нужен параметр g, так как в строке есть только одно совпадение.

+0

Это решило мою проблему, спасибо. Тем не менее, мне все еще интересно о космическом поведении. – vemacs

+0

Возможно, это была «вкладка»? – hek2mgl

+0

Я уверен, что это было пространство, даже пробежал его через шестнадцатеричный дамп. – vemacs

Смежные вопросы