URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9935
[ Назад ]

Исходное сообщение
"передача текстовой переменной в awk "

Отправлено DiJey , 06-Ноя-14 19:27 
Подскажите пожалуйста как передать текстовую переменную в awk? С числовыми проблем не возникает выдаются нормально.
Скрипт:
#!/bin/bash
USERS="user0 user1 user2 user3 useretc"
FILES=`ls passwd.*`
for f in $FILES
do
i=1
echo $f
for u in $USERS
do
name=`grep $u user_login.txt | awk '{ print $4 }'`
#echo $name
#Эхо выводит нечто: Фамилия И.О.
grep $u $f | gawk -F: '{ print '$i'";","12.09.2011;",'$name'";",$1";","users;",$7";",$3";","Текст" }'
let "i=i+1"
done
echo
done

Ожидается что скрипт выведет нечто:
passwd.filename
1; 12.09.2014; Фамилия И.О.0; user0; users; /bin/csh; 1111; Текст
2; 12.09.2014; Фамилия И.О.1; user1; users; /bin/csh; 1112; Текст
3; 12.09.2014; Фамилия И.О.2; user2; users; /bin/csh; 1113; Текст
4; 12.09.2014; Фамилия И.О.3; user3; users; /bin/csh; 1114; Текст
5; 12.09.2014; Фамилия И.О.etc; useretc; users; /bin/csh; 1115; Текст

Выводит:
passwd.filename
1; 12.09.2014; ; user0; users; /bin/csh; 1111; Текст
2; 12.09.2014; ; user1; users; /bin/csh; 1112; Текст
3; 12.09.2014; ; user2; users; /bin/csh; 1113; Текст
4; 12.09.2014; ; user3; users; /bin/csh; 1114; Текст
5; 12.09.2014; ; useretc; users; /bin/csh; 1115; Текст

если делаю:
например
name=2, то в соответсвующих местах выводит 2
Сделал вывод что awk у меня отображает только числовые данные которые в него попали из вне, как сделать что бы отобразил текстовые?


Содержание

Сообщения в этом обсуждении
"передача текстовой переменной в awk "
Отправлено Led , 07-Ноя-14 01:57 
Зачем здесь awk?

"передача текстовой переменной в awk "
Отправлено Pahanivo , 07-Ноя-14 07:58 
> Зачем здесь awk?

что вообще делает это скрипт, вернее не скрипт а набор команд )))



"передача текстовой переменной в awk "
Отправлено DiJey , 07-Ноя-14 14:26 
>> Зачем здесь awk?
> что вообще делает это скрипт, вернее не скрипт а набор команд )))

Выбирате из файлов passwd логины и показывает ФИО их пользователей, ну считает их еще и некоторые другие параметры тоже показывает.

user_login.txt # В формате: login ФИО , где ФИО 4 параметр в этом файле (через пробел).


"передача текстовой переменной в awk "
Отправлено Pahanivo , 07-Ноя-14 19:03 
>> что вообще делает это скрипт, вернее не скрипт а набор команд )))
> Выбирате из файлов passwd логины и показывает ФИО их пользователей, ну считает
> их еще и некоторые другие параметры тоже показывает.
> user_login.txt # В формате: login ФИО , где ФИО 4 параметр в
> этом файле (через пробел).

очень внятно сформулировано ...


"передача текстовой переменной в awk "
Отправлено DiJey , 07-Ноя-14 14:21 
> Зачем здесь awk?

А, какой еще вариант выдать строку с нужными подстановками?


"передача текстовой переменной в awk "
Отправлено Led , 07-Ноя-14 21:39 
>> Зачем здесь awk?
> А, какой еще вариант выдать строку с нужными подстановками?

man sed

man grep

man cut

man join


"передача текстовой переменной в awk "
Отправлено DiJey , 09-Ноя-14 01:34 
>>> Зачем здесь awk?
>> А, какой еще вариант выдать строку с нужными подстановками?
> man sed
> man grep
> man cut
> man join

Где ответ то? Умный что ли? :)


"передача текстовой переменной в awk "
Отправлено Led , 09-Ноя-14 02:24 
>>>> Зачем здесь awk?
>>> А, какой еще вариант выдать строку с нужными подстановками?
>> man sed
>> man grep
>> man cut
>> man join
> Где ответ то?

Смотри выше

> Умный что ли? :)

Да. Тебя не спрашиваю - и так понятно.


"передача текстовой переменной в awk "
Отправлено тень_pavel_simple , 07-Ноя-14 16:58 
>[оверквотинг удален]
> 1; 12.09.2014; ; user0; users; /bin/csh; 1111; Текст
> 2; 12.09.2014; ; user1; users; /bin/csh; 1112; Текст
> 3; 12.09.2014; ; user2; users; /bin/csh; 1113; Текст
> 4; 12.09.2014; ; user3; users; /bin/csh; 1114; Текст
> 5; 12.09.2014; ; useretc; users; /bin/csh; 1115; Текст
> если делаю:
> например
> name=2, то в соответсвующих местах выводит 2
> Сделал вывод что awk у меня отображает только числовые данные которые в
> него попали из вне, как сделать что бы отобразил текспеременно

В awk передаётся значение переменной с помощью ключика -v.  Кроме чтения манов силььно рекомендую .... код скрипта ужасен


"передача текстовой переменной в awk "
Отправлено DiJey , 09-Ноя-14 01:38 
>[оверквотинг удален]
>> 3; 12.09.2014; ; user2; users; /bin/csh; 1113; Текст
>> 4; 12.09.2014; ; user3; users; /bin/csh; 1114; Текст
>> 5; 12.09.2014; ; useretc; users; /bin/csh; 1115; Текст
>> если делаю:
>> например
>> name=2, то в соответсвующих местах выводит 2
>> Сделал вывод что awk у меня отображает только числовые данные которые в
>> него попали из вне, как сделать что бы отобразил текспеременно
> В awk передаётся значение переменной с помощью ключика -v.  Кроме чтения
> манов силььно рекомендую .... код скрипта ужасен

Можешь написать так что бы выдал то что нужно? У меня с -v не получилось, пробовал, ман читал.
Решил проблему с помощью sed (в тот день, еще когда писал), но не кошерно как то, хочу понять как сделать все awk.


"передача текстовой переменной в awk "
Отправлено тень_pavel_simple , 09-Ноя-14 10:12 
>[оверквотинг удален]
>>> например
>>> name=2, то в соответсвующих местах выводит 2
>>> Сделал вывод что awk у меня отображает только числовые данные которые в
>>> него попали из вне, как сделать что бы отобразил текспеременно
>> В awk передаётся значение переменной с помощью ключика -v.  Кроме чтения
>> манов силььно рекомендую .... код скрипта ужасен
> Можешь написать так что бы выдал то что нужно? У меня с
> -v не получилось, пробовал, ман читал.
> Решил проблему с помощью sed (в тот день, еще когда писал), но
> не кошерно как то, хочу понять как сделать все awk.

awk -v asd=1 '{print asd}'


"передача текстовой переменной в awk "
Отправлено DiJey , 09-Ноя-14 13:08 
>[оверквотинг удален]
>>>> name=2, то в соответсвующих местах выводит 2
>>>> Сделал вывод что awk у меня отображает только числовые данные которые в
>>>> него попали из вне, как сделать что бы отобразил текспеременно
>>> В awk передаётся значение переменной с помощью ключика -v.  Кроме чтения
>>> манов силььно рекомендую .... код скрипта ужасен
>> Можешь написать так что бы выдал то что нужно? У меня с
>> -v не получилось, пробовал, ман читал.
>> Решил проблему с помощью sed (в тот день, еще когда писал), но
>> не кошерно как то, хочу понять как сделать все awk.
> awk -v asd=1 '{print asd}'

Я ж писал цифровые значения и без -v передались, текстовые не передались, и у меня внешняя переменная а не конретное значение.


"передача текстовой переменной в awk "
Отправлено тень_pavel_simple , 09-Ноя-14 15:30 
>[оверквотинг удален]
>>>>> него попали из вне, как сделать что бы отобразил текспеременно
>>>> В awk передаётся значение переменной с помощью ключика -v.  Кроме чтения
>>>> манов силььно рекомендую .... код скрипта ужасен
>>> Можешь написать так что бы выдал то что нужно? У меня с
>>> -v не получилось, пробовал, ман читал.
>>> Решил проблему с помощью sed (в тот день, еще когда писал), но
>>> не кошерно как то, хочу понять как сделать все awk.
>> awk -v asd=1 '{print asd}'
> Я ж писал цифровые значения и без -v передались, текстовые не передались,
> и у меня внешняя переменная а не конретное значение.

у всех работает -- у тебя значит руки кривые.
а у меня что переменная не внешная?