2015-03-26 3 views
1

У меня есть этот файл с информацией пользователяShell сценарий. Раскол линия

darjak2:x:60919:100:Name Surname IF-3/3 2015-02-11:/export/home/darjak2:/bin/bash 
    edvmic:x:60920:100:Name2 Surname2 IF-3/14 2015-02-11:/export/home/edvmic:/bin/bash 
    darjak2:x:60519:100:Name3 Surname3 IF-3/3 2015-02-11:/export/home/darjak2:/bin/bash 
    edvmic:x:60920:100:Name4 Surname4 IF-3/9 2015-02-11:/export/home/edvmic:/bin/bash 

Так вот, как я бегу мой сценарий

./aa IF-3/3 

так что мне нужно, чтобы напечатать все имена людей и фамилии, которые из IF-3/3

indx=0 
kiekis=0 
labas=$1 
for i in $* 
do 
     indx=$(($indx+1)) 
     kiekis=$(grep $i /etc/passwd | wc -l) 
     echo "Grupe " $i "Mokiniu kiekis " $kiekis> t$indx 
awk -F: '{split($5,a,/[[:blank:]]+/); result=$(a[3])}' /etc/passwd 
echo $result 
done 

Итак, я расколол все. И затем попробуйте сделать это result=$(a[3]), а позже я проверю, если result = $ i. Что я делаю неправильно?

+0

Отличный вопрос включает (1) объяснение того, чего вы пытаетесь достичь, (2) ваш исходный код, (3) ваши входные данные, (4) ваши фактические результаты и (5) ожидаемые результаты. Вы поставили 2 и 3 (это отличный старт), но если бы вы могли также описать, какова ваша цель, это поможет нам настроить наши ответы. – ghoti

ответ

2

Вы должны добавить, если условие для проверки a[3] равно IF-3/3, если да, то заставить программу AWK для печати a[1] и a[2].

$ labas='IF-3/3' 
$ awk -F: -v var="$labas" '{split($5,a,/[[:blank:]]+/);if(a[3]==var)print a[1],a[2]}' file 
Name Surname 
Name3 Surname3 

кажется, что вы уже хранится первый аргумент labas переменной. Используйте параметр awk -v, чтобы передать значение переменной оболочки awk.

Смежные вопросы