Зависит от того, что это делает. Если это имеет параметры, передачу в насмешках, которые Вы могли спросить позже, назвали ли их с правильным набором параметров.
Как подробно описано здесь , вам нужно предложение положительного просмотра назад, например:
grep -P '(?<=name=)[ A-Za-z0-9]*' filename
-P заставляет grep использовать диалект Perl, иначе вам, вероятно, придется избегайте скобок. Вы также можете, как отмечено в другом месте, добавить параметр -o
, чтобы распечатать только то, что соответствует. Часть в скобках указывает, что вы хотите использовать буквенно-цифровые символы и пробелы.
Преимущество использования предложения положительного просмотра назад заключается в том, что текст «name =» не является частью совпадения. Если grep выделяет совпадающий текст, он выделяет только буквенно-цифровую часть (и пробелы). Параметр -o также не отображает часть «name =». И если вы перейдете к другой программе, такой как sed, которая может захватывать текст и что-то с ним делать, вы не будете захватывать часть "name =",
Попробуйте следующее:
sed -n 's/^name=//p' filename
По умолчанию sed ничего не печатает (-n), ничего не заменяйте префиксом,
grep напечатает всю строку, соответствующую шаблону. Чтобы напечатать только соответствующий шаблон, используйте опцию grep -o. Возможно, вам также понадобится использовать sed для удаления части name = из шаблона.
grep -o 'name=[0-9a-zA-Z ]' myfile | sed /^name=/d
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=/}
grep не извлекает, как вы ожидаете. Вам понадобится
grep "name=" file.txt | cut -d'=' -f1-