LINUX.ORG.RU

Оставить только текст после символа grep

 


0

1

Привет. Нашёл тему

Обрезать строку до и после символа. (комментарий)

Там оставляется текст в середине строки, а как оставить только текст после символа «|»?

Я нашёл как оставить до символа:

echo «dfsadfa|32134» | grep -o ‘^[^|]*’

но не получилось адаптировать зеркально.

Подскажите пожалуйста как?

grep ищет строку, в которой есть вхождения, соответствующие патерну и выводит ее. Используйте sed, awk, cut и т.д.

dmitry237 ★★★★★
()
grep -o '|[^\r\n]\+' | cut -c2-
sed 's/\([^|]*\)\|\(.*\)$/\2/'
awk '{sub(/[^|]+\|/,"");print}'
cut -d '|' -f2-

Ну и POSIX Shell:

str="aoeu|1234|qwer"
${str#*|}
mord0d ★★★★★
()
Ответ на: комментарий от teod0r

все работают, кроме sed ‘s/([^|])|(.)$/\2/’

Значит поправочка: BSD sed. Благодарю.

mord0d ★★★★★
()
Ответ на: комментарий от teod0r

grep -oP ‘(?<=|).*’

это ты \ забыл?

Нет, не забыл. Это так преобразуется сообщение на ЛОРе, что бэкслэш теряется. У меня разметка Markdown стоит.

 % echo 'aoeu|1234|qwer' | grep -oP '(?<=\|).*'
usage: grep [-abcDEFGHhIiLlmnOoPqRSsUVvwxz] [-A num] [-B num] [-C num]
	[-e pattern] [-f file] [--binary-files=value] [--color=when]
	[--context=num] [--directories=action] [--label] [--line-buffered]
	[--null] [pattern] [file ...]
 % 
mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Проверь в GNUтых утилитках мои примеры отсюда, если не лень?

pkg info | grep awk           
gawk-5.2.1                     GNU version of AWK scripting language
pkg info | grep sed | grep GNU   
gsed-4.9                       GNU stream editor
Clockwork ★★★★★
()
Ответ на: комментарий от Clockwork

В фряхе юзается огрызок.

Ничего не знаю, мне хватает. =P

Ставить GNU grep/sed/awk только чтобы проверить примеры для форума? Нет, спасибо. (=

mord0d ★★★★★
()
Ответ на: комментарий от iron

А ещё есть ripgrep, который по заверению авторов вообще всех рвёт по скорости.

Но проблема в том, что везде отличаются регулярки.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Но проблема в том, что везде отличаются регулярки.

Так вродь POSIX регулярки поддерживаются всеми одинаково. Только вот писать на них издивательство.

iron ★★★★★
()
Ответ на: комментарий от iron

Так вродь POSIX регулярки поддерживаются всеми одинаково.

Проверь в GNUтых утилитках мои примеры отсюда, если не лень?

все работают, кроме sed ‘s/([^|])|(.)$/\2/’

“The sed utility is expected to be a superset of the IEEE Std 1003.2 (“POSIX.2”) specification.”
© sed(1), FreeBSD

Это GNU sed не следует POSIX, или регулярка ей не соответствует? ^_~

Только вот писать на них издивательство.

RE/ERE в качестве ночных кошмаров? Соболезную. (%

mord0d ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.