Как использовать grep для получения чего-нибудь сразу после 'имя ='?

Зависит от того, что это делает. Если это имеет параметры, передачу в насмешках, которые Вы могли спросить позже, назвали ли их с правильным набором параметров.

60
задан fedorqui 22 August 2016 в 08:55
поделиться

5 ответов

Как подробно описано здесь , вам нужно предложение положительного просмотра назад, например:

grep -P '(?<=name=)[ A-Za-z0-9]*' filename

-P заставляет grep использовать диалект Perl, иначе вам, вероятно, придется избегайте скобок. Вы также можете, как отмечено в другом месте, добавить параметр -o , чтобы распечатать только то, что соответствует. Часть в скобках указывает, что вы хотите использовать буквенно-цифровые символы и пробелы.

Преимущество использования предложения положительного просмотра назад заключается в том, что текст «name =» не является частью совпадения. Если grep выделяет совпадающий текст, он выделяет только буквенно-цифровую часть (и пробелы). Параметр -o также не отображает часть «name =». И если вы перейдете к другой программе, такой как sed, которая может захватывать текст и что-то с ним делать, вы не будете захватывать часть "name =",

106
ответ дан 24 November 2019 в 17:38
поделиться

Попробуйте следующее:

sed -n 's/^name=//p' filename

По умолчанию sed ничего не печатает (-n), ничего не заменяйте префиксом,

22
ответ дан 24 November 2019 в 17:38
поделиться

grep напечатает всю строку, соответствующую шаблону. Чтобы напечатать только соответствующий шаблон, используйте опцию grep -o. Возможно, вам также понадобится использовать sed для удаления части name = из шаблона.

grep -o 'name=[0-9a-zA-Z ]'  myfile | sed /^name=/d
1
ответ дан 24 November 2019 в 17:38
поделиться

gawk

echo "name=some value here" | awk -F"=" '/name=/ { print $2}' 

или с помощью bash

str="name=some value here"
IFS="="
set -- $str
echo $1    
unset IFS

или

str="name=some value here"
str=${str/name=/}
5
ответ дан 24 November 2019 в 17:38
поделиться

grep не извлекает, как вы ожидаете. Вам понадобится

grep "name=" file.txt | cut -d'=' -f1-
4
ответ дан 24 November 2019 в 17:38
поделиться
Другие вопросы по тегам:

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