2013-08-22 2 views

ответ

2

Прежде всего, обратите внимание, что PS1 является приглашением bash. Дополнительную информацию см. В разделе How to: Change/Setup bash custom prompt (PS1).

sed -i "s/PS1\='\\\\u\@[^]]*:/PS1\='\\\\u\@\\\\H:/g" test 

Он ищет текст PS1\='\\u\@[^]]*: и заменяет его PS1\='\\u\@\\H: в test файле.

sed 's/hello/bye/g' file является основной СЭД команда, которая ищет hello и заменяет его bye все вдоль file (g означает «глобальный», так что это делает каждый раз, когда он находит текст).

В то время как это выражение sed показывает результат на stdout, если вы хотите, чтобы результат был обновлен, вместо этого вы добавляете опцию -i.

Затем обратите внимание, что я упомянул, что поиск текста - PS1\='\\u\@[^]]*:, в то время как в выражении sed мы видим PS1\='\\\\u\@[^]]*:. Вот почему любой \ должен быть экранирован ... и для этого используется символ \.

Что касается конкретного шаблона искали:

PS1\='\\u\@[^]]*: 

означает текст, как

PS1='\\u\@` 
+ 
any string until the character `]` is found 
+ 
: 

Так это будет соответствовать тексты как PS1\='\\u\@[hello how are you]:.

Он заменяет их PS1\='\\u\@\\H:.

+0

Не могли бы вы рассказать, какой шаблон он заменяет тем, что. Пример –

+0

@ КришнаРедди уверен, см. обновленный ответ. – fedorqui

+0

Да, и это команда, которую я прокомментировал в своем ответе. – fedorqui

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