Подскажите пожалуйста как передать текстовую переменную в 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?
> Зачем здесь awk?что вообще делает это скрипт, вернее не скрипт а набор команд )))
>> Зачем здесь awk?
> что вообще делает это скрипт, вернее не скрипт а набор команд )))Выбирате из файлов passwd логины и показывает ФИО их пользователей, ну считает их еще и некоторые другие параметры тоже показывает.
user_login.txt # В формате: login ФИО , где ФИО 4 параметр в этом файле (через пробел).
>> что вообще делает это скрипт, вернее не скрипт а набор команд )))
> Выбирате из файлов passwd логины и показывает ФИО их пользователей, ну считает
> их еще и некоторые другие параметры тоже показывает.
> user_login.txt # В формате: login ФИО , где ФИО 4 параметр в
> этом файле (через пробел).очень внятно сформулировано ...
> Зачем здесь awk?А, какой еще вариант выдать строку с нужными подстановками?
>> Зачем здесь awk?
> А, какой еще вариант выдать строку с нужными подстановками?man sed
man grep
man cut
man join
>>> Зачем здесь awk?
>> А, какой еще вариант выдать строку с нужными подстановками?
> man sed
> man grep
> man cut
> man joinГде ответ то? Умный что ли? :)
>>>> Зачем здесь awk?
>>> А, какой еще вариант выдать строку с нужными подстановками?
>> man sed
>> man grep
>> man cut
>> man join
> Где ответ то?Смотри выше
> Умный что ли? :)
Да. Тебя не спрашиваю - и так понятно.
>[оверквотинг удален]
> 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. Кроме чтения манов силььно рекомендую .... код скрипта ужасен
>[оверквотинг удален]
>> 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.
>[оверквотинг удален]
>>> например
>>> name=2, то в соответсвующих местах выводит 2
>>> Сделал вывод что awk у меня отображает только числовые данные которые в
>>> него попали из вне, как сделать что бы отобразил текспеременно
>> В awk передаётся значение переменной с помощью ключика -v. Кроме чтения
>> манов силььно рекомендую .... код скрипта ужасен
> Можешь написать так что бы выдал то что нужно? У меня с
> -v не получилось, пробовал, ман читал.
> Решил проблему с помощью sed (в тот день, еще когда писал), но
> не кошерно как то, хочу понять как сделать все awk.awk -v asd=1 '{print asd}'
>[оверквотинг удален]
>>>> name=2, то в соответсвующих местах выводит 2
>>>> Сделал вывод что awk у меня отображает только числовые данные которые в
>>>> него попали из вне, как сделать что бы отобразил текспеременно
>>> В awk передаётся значение переменной с помощью ключика -v. Кроме чтения
>>> манов силььно рекомендую .... код скрипта ужасен
>> Можешь написать так что бы выдал то что нужно? У меня с
>> -v не получилось, пробовал, ман читал.
>> Решил проблему с помощью sed (в тот день, еще когда писал), но
>> не кошерно как то, хочу понять как сделать все awk.
> awk -v asd=1 '{print asd}'Я ж писал цифровые значения и без -v передались, текстовые не передались, и у меня внешняя переменная а не конретное значение.
>[оверквотинг удален]
>>>>> него попали из вне, как сделать что бы отобразил текспеременно
>>>> В awk передаётся значение переменной с помощью ключика -v. Кроме чтения
>>>> манов силььно рекомендую .... код скрипта ужасен
>>> Можешь написать так что бы выдал то что нужно? У меня с
>>> -v не получилось, пробовал, ман читал.
>>> Решил проблему с помощью sed (в тот день, еще когда писал), но
>>> не кошерно как то, хочу понять как сделать все awk.
>> awk -v asd=1 '{print asd}'
> Я ж писал цифровые значения и без -v передались, текстовые не передались,
> и у меня внешняя переменная а не конретное значение.у всех работает -- у тебя значит руки кривые.
а у меня что переменная не внешная?