Справка по команде AWK - PullRequest
       5

Справка по команде AWK

0 голосов
/ 26 января 2010

Как мне написать команду awk, которая читает файл / etc / passwd и выводит только имена всех пользователей, у которых в качестве командной оболочки по умолчанию используется программа / bin / bash?

Ответы [ 4 ]

4 голосов
/ 26 января 2010
cat /etc/passwd | awk -F ":" '$7=="/bin/bash" { print $1 }'
3 голосов
/ 26 января 2010

Поскольку это домашнее задание, я не буду писать программу для вас (и, надеюсь, никто другой не сделает), но вот что вам нужно знать:

  • Разделителем полей по умолчанию в AWK является пробел; разделитель поля в /etc/passwd является двоеточием. Вы можете изменить разделитель полей в AWK с помощью переменной FS или -F в командной строке.

  • В /etc/passwd/ оболочка указана в седьмом поле.

Ну, за то время, которое мне потребовалось, чтобы написать так много, два человека сделали вашу домашнюю работу для вас. Удачи!

1 голос
/ 26 января 2010

awk -F: '/\/bin\/bash$/{print $1}' /etc/passwd

0 голосов
/ 27 января 2010

@ OP, вы можете использовать awk

awk 'BEGIN{FS=":"}$7~/bash/{print $1}' /etc/passwd

вышеупомянутые проверки для bash, но не ограничиваются / bin / bash. Если вам определенно нужен / bin / bash, измените его.

ИЛИ сказать своему учителю, что вы хотите использовать только оболочку

#!/bin/bash

while IFS=":" read -r user b c d e f sh h
do
    case "$sh" in
        *bash* ) echo $user;;
    esac
done <"/etc/passwd"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...