Как сделать bash-копию переменной awk? - PullRequest
0 голосов
/ 16 февраля 2012

Вот упрощенная версия моей проблемы.

if (echo "AA BB CC" | awk '{ print $1 $2 }' | grep -q "B"); then
   echo $2
fi

Я хотел бы сделать $2 доступным в bash, чтобы я мог использовать его в другом месте скрипта.

Можетчто делать?

Обновление

Я понял, что слишком сильно упростил задачу.Выражение awk должно было быть awk '{ print $1 $2 }' вместо просто awk '{ print $2 }', которое я первоначально разместил.

Ответы [ 3 ]

2 голосов
/ 16 февраля 2012

Вы можете использовать set:

set -- `echo "AA BB CC" | awk '{print $2}'`
case $1 in *B*) echo $1;; esac

... или, если вы использовали awk только для разделения вывода, пусть set также выполнит эту часть:

set -- `echo "AA BB CC"`
case $2 in *B*) echo $2;; esac
1 голос
/ 16 февраля 2012

Запомните вывод awk, проверьте его на регулярное выражение и напечатайте:

output=$( echo "AA BB CC" | awk '{ print $2 }' )
if grep -q B <<< "$output" ; then echo "$output" ; fi
0 голосов
/ 16 февраля 2012

Вы можете захватить стандартный вывод в переменную с помощью оператора обратного течения, например,

a=`echo foo`
echo $a

Для вашего примера это будет что-то вроде:

a=`echo "AA BB CC" | awk '{ print $2 }' | grep -q "B"`
echo $a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...