Может ли кто-нибудь объяснить смысл ниже инструкции sed?Что касается оценки выражения sed в оболочке
sed -i "s/PS1\='\\\\u\@[^]]*:/PS1\='\\\\u\@\\\\H:/g" test
Может ли кто-нибудь объяснить смысл ниже инструкции sed?Что касается оценки выражения sed в оболочке
sed -i "s/PS1\='\\\\u\@[^]]*:/PS1\='\\\\u\@\\\\H:/g" test
Прежде всего, обратите внимание, что 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:
.
Не могли бы вы рассказать, какой шаблон он заменяет тем, что. Пример –
@ КришнаРедди уверен, см. обновленный ответ. – fedorqui
Да, и это команда, которую я прокомментировал в своем ответе. – fedorqui