Печать между специальными символами с помощью sed, grep - PullRequest
0 голосов
/ 09 июля 2019

Мне нужно напечатать строку между этими символами ....

atob('       ')

Я использую = во второй части, чтобы попытаться остановить код на знаках равенства (на этом заканчивается строка base64, которую я пытаюсь получить.)

Я использую этот скрипт, но он печатает всю строку, содержащую вышеуказанные символы. Мне нужны только данные между ними.

  sed -n '/atob/,${p;/==/q;}'

Я ценю любую помощь. Спасибо.

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Работает ли это (проверено на GNU sed 4.2.2)?

 sed -n -e "s/atop('\(.*\)')/\1/p" b.txt

где b.txt

atop('safdasdfasf')

или вы можете попробовать awk

awk -F\' '/atop/ {print $2}' b.txt 

(протестировано для gnu awk 4.0.2 и добавлено предложение от Jotne)

0 голосов
/ 09 июля 2019

И еще один рабочий седь:

echo "atop('safdasdfasf')" | sed -r "/atop/ s/^[^']+'([^']+)'.*/\1/"
safdasdfasf
...