Переменная поиска awk для переменной - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь получить строку из строки из файла из пользовательского ввода.

Она должна вывести имя, подобное этому: Tharahan Muthu
из строки букв, подобных этой: muthu:x:14232:504:Tharahan Muthu:/home/staff/muthu:/bin/bash
Имя всегда является 5-м и 6-м элементом.

Работает нормально, вплоть до строки awk, после которой ничего не печатается.

#! /bin/bash

clear
echo "Type your n number"
read name
var1=$(grep -n $name /etc/passwd)
awk -v var="$var1" -F "[: ]" '/$0~var/{print $5" " $6 }' /etc/passwd

edit:исправлена ​​опечатка, в которой было напечатано var = "$ var1" var = "$ var2"

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Спасибо за все быстрые ответы!

Сначала я выясню проблему, а затем перейду к решению.

Файл /etc/passwd содержит список из нескольких тысяч человек.с одним человеком на линию.В указанной строке есть несколько полей: их имя пользователя, их полное имя и ассортимент чисел, разделенных двоеточиями.Все поля находятся в одной и той же позиции для каждой строки (полное имя всегда в 5-й строке)

Я хотел использовать grep для сохранения строки, в которой было имя пользователя, а затем с помощью awk найти полнуюимя в этой строке.

Я довольно плохо знаком с bash, поэтому совершенно забыл о трубах и сделал их слишком сложными для себя.


Решение:

clear
echo "Please Enter Username:";<br>
read UNAME;<br>
grep $UNAME /etc/passwd | awk -F":" '{print "Full Name: " $5}'
exit 0
0 голосов
/ 13 октября 2018

Ваш awk синтаксис шаблона неверен

awk -F: -v var="$var2" '$0~var{print $5}' /etc/passwd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...