Regexing список символов в sed

У меня есть список символов:

11183 11183 1 0 0 0 0 false -- "-"

Если я хочу взять все до лжи (включая) с grep Я использую:

grep -o '[0-9].* [a-z]* '

В чем аналог sed?

0
задан 13 March 2018 в 05:19

2 ответа

Синтаксис этого регулярного выражения в sed идентично. Например, если Вы хотите заменить строку (строки), которая соответствует к этому регулярному выражению, можно использовать команду замены следующим образом (s/<old>/<new>/):

$ echo '11183 11183 1 0 0 0 0 false -- "-"' | sed 's/[0-9].* [a-z]* /_THE_NEW_STRING_/'
_THE_NEW_STRING_-- "-"

Конечно, можно использовать расширенные регулярные выражения -r, --regexp-extended сделать Вашу жизнь легкой в некоторых случаях:

$ echo '11183 11183 1 0 0 0 0 false -- "-"' | sed -r 's/([0-9].* [a-z]* ).*/\1/'
11183 11183 1 0 0 0 0 false 

$ echo '11183 11183 1 0 0 0 0 false -- "-"' | sed -r 's/([0-9].* [a-z]* )(.*)/\2 \1/'
-- "-" 11183 11183 1 0 0 0 0 false 
1
ответ дан 30 October 2019 в 06:50

Это sed команда возвратит что-либо (.*) с начала строки (^), до и включая первое вхождение false исключая остальных (.*$).

sed -r 's/^(.*\<false\>).*$/\1/'
2
ответ дан 30 October 2019 в 06:50

Другие вопросы по тегам:

Похожие вопросы: