Первый символ полного имени, а не имя пользователя

#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) }