2015-03-26 3 views
0

У меня есть файлShell получить конкретные слова в строке

 tadjag:x:60697:100:Name Surname IF-3/4 2015-02-02:/export/home/tadjag:/bin/bash 
     linbul:x:60698:100:Name2 Surname2 IF-3/4 2015-02-02:/export/home/linbul:/bin/bash 
     sarvis:x:60699:100:Name3 Surname3 IF-3/2 2015-02-02:/export/home/sarvis:/bin/bash 
     deigru:x:60701:100:Name4 Surname4 IF-3/4 2015-02-02:/export/home/deigru:/bin/bash 
     tauilc:x:60702:100:Name5 Surname5 IF-3/3 2015-02-02:/export/home/tauilc:/bin/bash 
    ... 
    ... 
    ... 
    ... 

и я хочу взять только имя и фамилия, если они находятся от IF-3/4. Так что мой результат должен быть

Name Surname 
Name2 Surname2 
Name4 Surname4 

, что я сделал

awk -F: '{print $5}' myFile 

Так что мой вывод

Name Surname IF-3/4 2015-02-02 
... 
... 

Так же можно получить только имя и фамилия, если они находятся от IF-3/4

+0

Я просто обновил свой вопрос. – David

ответ

1

Используйте функцию разделения awk для разделения на пробелы, которые существуют в столбце 5, и снова сохраняет s связанных значений с ассоциированным массивом a. Так a[1] содержит первое слово (Наименование) и a[2] содержит второе слово (Фамилия).

$ awk -F: '{split($5,a,/[[:blank:]]+/); print a[1],a[2]}' file 
Name Surname 
Name2 Surname2 
Name3 Surname3 
+0

Спасибо! Но что, если я хочу использовать также [3]. Например, awk -F: '{split ($ 5, a,/[[: blank:]] + /); напечатайте файл [1], [2]} ' , если ["$ a [3]" = "IF-3/4"]; – David

+0

Вы имеете в виду это 'awk -F: '{split ($ 5, a,/[[: blank:]] + /); распечатать [1], [2], [4]} файл? –

0
awk -F'[: ]' 'NR<2||!(NR%2){print $5,$6}' file 

Name Surname 
Name2 Surname2 
Name4 Surname4 
Смежные вопросы