Sed регулярные выражения в вопросах Bash - PullRequest
0 голосов
/ 31 октября 2018

Может кто-нибудь сказать мне, почему этот седан ниже не работает

...| sed -E $'s/^\d/blah/g'

против этого работает?

| sed -E $'s/^/blah/g'

образец:

echo "10/30/18 04:45:13 PM EDT" | sed -E $'s/^/blah/'

Обновлено желание:

echo "10/30/18 04:45:13 PM EDT" | 
sed 's/^[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]]/\blah\n/'

blah
10/30/18 04:45:13 PM EDT

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Это может сработать для вас (GNU sed):

sed '/^..\/..\/.. ..:..:.. /iblah' file

Вставляет blah над регулярным выражением и:

sed '/^..\/..\/.. ..:..:.. /ablah' file

Добавляется blah ниже регулярного выражения.

0 голосов
/ 31 октября 2018

Свойство \d (цифры) работает в PCRE / Perl, но не в BRE или ERE, которые используются sed.

Используйте [[:digit:]] вместо \d в sed:

sed 's/^[[:digit:]]/blah/'

Для вашего обновленного вопроса используйте команду gnu sed:

echo "10/30/18 04:45:13 PM EDT" |
sed -E 's~^([[:digit:]]{2}/){2}[[:digit:]]{2}~\blah\n&~'

blah
10/30/18 04:45:13 PM EDT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...