[CLOSED] [shell - awk] передать shell переменную в тело awk-у
awk -v logname=${LOGNAME} 'BEGIN { print logname ENVIRON["LOGNAME"]}'
awk -v login=${LOGNAME} -F: '$1 == login { print }' /etc/passwd
grep "^${LOGNAME}:" /etc/passwd
awk -v login=${LOGNAME} -F: '$1 == login { print }' /etc/passwd
grep "^${LOGNAME}:" /etc/passwd
А так работает?
cat /etc/passwd | awk -F':' '{if ($1 == "'"${LOGNAME}"'") print $0}'круто, спасибо!
сразу 2 способа =)
PS
ENVIRON[] тема =)
сразу 2 способа =)
PS
ENVIRON[] тема =)
А так работает?работает.. я туда как только не пробовал впихнуть ее.. экранировал по всякому.. даже echo пытался воткнуть.. не получалось... а вот так, по всей видимости не пробовал, блин =)
code:cat /etc/passwd | awk -F':' '{if ($1 == "'"${LOGNAME}"'") print $0}'
спасибо!
grep "^${LOGNAME}:" /etc/passwdзадача не вывести из /etc/passwd свою строку... это так, пример, чтоб нагляднее было...
задача была научиться использовать переменные окружения в awk-е
Спасибо!
awk "{print $blablabla}" - распечатает скриптовый $blablabla
awk "{print \$1}" - распечатает первое слово из входа awk-а
вроде бы не очень много нужно экранировать
awk "{print \$1}" - распечатает первое слово из входа awk-а
вроде бы не очень много нужно экранировать

Оставить комментарий
macrophage
Чет никак не получается скормить awk-у shell переменную.На простом примере:
cat /etc/passwd | awk -F':' '{if ($1 == "<my_name>") print $0}'Возвращает строку из /etc/passwd с первым полем равным <my_name>.
Хочу вместо <my_name> вставить шеловскую переменную, но чет никак не могу понять как ее туда впихнуть
Так, ясен пень, работает:
Z="cat /etc/passwd | awk -F':' '{if (\$1 == \"${LOGNAME}\") print \$0}'" ; eval $Z, но имхо изврат, тем более, что этот пример простой, а в более сложном задолбаюсь экранировать...
Ведь наверняка можно передать? никто не сталкивался?