Мне нужно использовать sed -E
, чтобы заставить это работать.
$ echo "Welcome To The Geek Stuff" | sed 's/(\b[A-Z])/(\1)/g'
sed: -e expression #1, char 18: invalid reference \1 on `s' command's RHS
$ echo "Welcome To The Geek Stuff" | sed -E 's/(\<.)/(\1)/g'
(W)elcome (T)o (T)he (G)eek (S)tuff
Вы также можете использовать якорь \<
, который является «началом слова», где \b
является «границей слова».Использование маркера начала слова позволяет упростить регулярное выражение для соответствия любому символу слова:
$ echo "Welcome To The Geek Stuff 123" | sed -E 's/\<./(&)/g'
(W)elcome (T)o (T)he (G)eek (S)tuff (1)23