#bash #shell #grep
#удар #ракушка #grep
Вопрос:
У меня есть задача записать в файл список имен для входа, полных имен и домашних каталогов всех пользователей, чей первый символ их полного имени (не имя для входа) — «A» или «Z»(обработайте файл /etc/passwd).
Я пытался с
gt; cat /etc/passwd | grep -i '^A|^Z' gt; ex.list
Но он также выводит пользователей, у которых имя начинается с другой буквы, чем A или Z. Как это изменить ?
Комментарии:
1. Этого будет достаточно:
getent passwd | awk -F: '$5 ~ /^[AZ]/{printf("%st%sn", $5, $6)}'
Ответ №1:
- Используйте
getent
для полученияpasswd
записей независимо от того, является ли это локальным/etc/passwd
файлом или обработанной информацией. - Используется
awk
для фильтрации нужных записей пользователей, затем выводит их настоящее имя и свойства домашнего каталога.
getent passwd | awk -F: '$5 ~ /^[AZ]/{printf("%st%sn", $5, $6)}'
awk -F:
: вызываетсяawk
с:
помощью разделителя полей as.
Сама программа awk
# Filter field 5 containing Real Name # and regex match it starts with upper-case A or Z $5 ~ /^[AZ]/{ # For each selected entry # Print a tab formatted list with fields 5 and 6 # witch contains the Real-Name and Home Directory printf("%st%sn", $5, $6) }