Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Как извлечь переменную в awk?  (Прочитано 1198 раз)

0 Пользователей и 1 Гость просматривают эту тему.

izamoo

  • Автор темы
  • Гость
Как извлечь переменную в awk?
« : 16 Сентября 2012, 22:06:08 »
например:
a=desktop
awk '$0 ~/`echo $a`/' file.txt
не работает.

andrey_p

  • Автор темы
  • Гость
Re: Как извлечь переменную в awk?
« Ответ #1 : 17 Сентября 2012, 07:06:29 »
"Стандартный" и небезопасный способ, который работает с любыми подобными программами (sed, python, sql-клиент и т.д.):

a=1;perl -le 'print '"$a"'+1'
То есть закрываем одинарные кавычки, открываем двойные, переменная, закрываем двойную, заново открываем одинарную. Этот способ считается небезопасным:

a='; system "echo I got you";' 
perl -le 'print '"$a"' + 1'

Поэтому awk имеет специальную опцию для внедрения переменных оболочки:

a='; system "echo I got you";'
awk -va="$a" 'BEGIN { print a }'

В awk есть еще возможность внедрения через аргументы, для динамической смены значения переменной во время обработки файлов:

echo hi | awk '{ print a }' a="$a"
Подробности:

Цитировать
sudo apt-get install gawk-doc
info awk

izamoo

  • Автор темы
  • Гость
Re: Как извлечь переменную в awk?
« Ответ #2 : 17 Сентября 2012, 13:36:49 »
нихрена не понял

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Как извлечь переменную в awk?
« Ответ #3 : 19 Сентября 2012, 08:42:37 »
izamoo, что Вы хотите получить.
Я не понял.

На всякий случай (может поможет).

Как получить результат команды в переменную.
var=`команда`

Информация по awk
man awk

Кавычки бывают 3 типов:
"
'
`
« Последнее редактирование: 19 Сентября 2012, 08:44:38 от alexander.pronin »

izamoo

  • Автор темы
  • Гость
Re: Как извлечь переменную в awk?
« Ответ #4 : 19 Сентября 2012, 13:03:10 »
Я думаю дело в ключе -v.  Мне нужно что бы в коде подставлялось значение переменной.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Как извлечь переменную в awk?
« Ответ #5 : 19 Сентября 2012, 13:25:16 »
Ещё пример:
$ a="abc" ; echo -e "1\t2\n3\t4" | awk -v b="$a" '{print $1" "b" "$2}'
1 abc 2
3 abc 4

izamoo

  • Автор темы
  • Гость
Re: Как извлечь переменную в awk?
« Ответ #6 : 19 Сентября 2012, 13:59:30 »
Ещё пример:
$ a="abc" ; echo -e "1\t2\n3\t4" | awk -v b="$a" '{print $1" "b" "$2}'
1 abc 2
3 abc 4

Да, я примерно понял, Нужно потренироваться ещё. Всем спасибо

 

Страница сгенерирована за 0.015 секунд. Запросов: 22.