Не удается корректно выполнить файл grep

62
8

У меня есть файл с очень простым синтаксисом:

cat /tmp/test

ARCH=""prtconf -b | awk '/^name:/ {print $2}'

Я попытался это сделать:

cat /tmp/test | grep "prtconf -b | awk '/^name:/ {print $2"

ARCH=""prtconf -b | awk '/^name:/ {print $2}'

Пусть make grep string немного дольше, добавьте} до конца:

cat /tmp/test | grep "prtconf -b | awk '/^name:/ {print $2"}

Ничего не найдено

Почему, когда я добавляю} в конец строки, grep перестает работать?

ОС - Solaris 10U11

спросил(а) 2021-01-19T11:09:26+03:00 2 месяца, 3 недели назад
1
Решение
61

$2 относится к параметру командной строки, поэтому здесь он будет заменять пустой символ в patter. Таким образом, вам нужно избежать $ помощью косой черты, например \$

cat /tmp/test | grep "prtconf -b | awk '/^name:/ {print \$2}"

Без добавления } в ваш patter он работал, потому что он соответствовал фактическому шаблону как prtconf -b | awk '/^name:/{print prtconf -b | awk '/^name:/{print для ввода. Но если вы добавите } в свой patter, тогда он попытается сопоставить prtconf -b | awk '/^name:/{print } prtconf -b | awk '/^name:/{print } (которого нет в вашем файле, чтобы он не показывал вывод.)

ответил(а) 2021-01-19T11:09:26+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема