Просто используйте литеральный символ Esc, вводимый с Ctrl-v, Esc (будет отображен как ^[
на экране):
PS1="^[[34mLinux^[[00m"
Или используйте вывод echo
команда, которую Вы узнаете, работает:
PS1="$(echo -e "\033[35mLinux\033[00m")"
Это то, что Вы хотите?
$ sed 's/\(^\| \)test3\( \|$\)/\1/g' file
test3.legacy test4.legacy test3.kami
Это говорит
substitute
(^ start of line OR space)
test3
(space OR end of line)
with match 1 (AKA space or start of line)
Обновление:
И, как так изящно помещено хорошим @Stephane Chazelas это не заботилось бы об определенных случаях. Также подчеркните на части мобильности. См. ответ ниже.
Вариант GNU мог, (надо надеяться), быть:
sed 's/\(^\| \)\(test3\( \|$\)\)*/\1/g'
# Or perhaps:
sed 's/\(^\| \)\(test3\( \|$\)\)\+/\1/g'
заботясь о повторяющихся соответствиях. Дополнительно можно было бы заботиться о нескольких пробелах и т.д. также. В зависимости от входа.
EOUPD
Как альтернатива, возможно (только предназначенный как начальная точка):
sed 's/\Wtest3\W/ /g'
Не это я принимаю:
$ sed 's/test3\.\?[^ ]* *//g' file
test4.legacy
Я искал бы test3, перенесенный с пространством с обеих сторон, \s
, учитывая Ваш пример, а не пытаются использовать граничную нотацию слова.
$ echo "test3.legacy test4.legacy test3 test3.kami" | sed 's/\stest3\s/ /g'
test3.legacy test4.legacy test3.kami
Вышеупомянутое ищет пространство test3 пространство и заменяет это просто пространством.
Примечание: Это не обработает ситуацию, где test3 является первым в списке!
\s
расширение GNU (вдохновленный perl
) и коротко для стандарта [[:space:]]
, нет [[:blank:]]
, это - это, включает все символы пространства по горизонтали и пространства по вертикали, не только вкладку и пространство. Это - также иждивенец локали. Вашему решению также не удалось бы удалить второй test3 в "x test3 test3 y"
– Stéphane Chazelas
05.05.2013, 23:07
Портативно:
sed -e 's/.*/ & /' -e :1 -e 's/ test3 / /g;t1' -e 's/^ //;s/ $//'
Это:
test3
вначале и конец особенно,test3
включенный в пробелы с одиночным пробелом,test3 test3
случаи).Это также работало для меня, просто удаляя слово Test3
sed 's/ test3 .//g'
sed -e 's/ test3 / /g' -e 's/ test3//g' -e 's/test3 //g' myfile.txt
Пожалуйста, попробуйте выше
|
)? – maGz 05.05.2013, 22:31\|
,\W
или\?
являются стандартнымиsed
. Таким образом, вышеупомянутое будет работать с GNUsed
, но вероятно не многие другие. – Stéphane Chazelas 05.05.2013, 22:54test3
вtest3 test3
. Второе повернулось быx.test3.y
вx y
. – Stéphane Chazelas 05.05.2013, 23:12