2015-06-26 1 views
0

Я хочу показать всем пользователям, что его UID между 300 и 500. Я пробовал команду grep, но я не могу получить результат, который мне нужен.Linux: как я могу отобразить всех пользователей Linux, имеющих UID от 300 до 500?

Я попробовал этот синтаксис, но он не работает:

cat /etc/passwd | grep *:[300-500] 

ответ

0
egrep 'x:3[0-9][0-9]:|x:4[0-9][0-9]:|x:500:' /etc/passwd 

или более красноречивы

egrep 'x:[3-4][0-9][0-9]:|x:500:' /etc/passwd 
+1

Почему бы не объединить первый символ в '[34]'. Он будет терпеть неудачу, если такой номер появится в любом другом поле, например, в имени пользователя или даже в gid. – unxnut

+0

@unxnut по популярному запросу ;-) –

+0

Еще не решила проблему числа в других полях. – unxnut

2

Использование AWK, вот ваш ответ:

awk -F: '$3 < 500 && $3 > 300 { print $0 }' /etc/passwd 

Вы можете print $1, если вы просто хотите имя пользователя.

+0

Он ничего не возвращает как результат .. !! –

+0

Я попробовал это на своем Mac перед публикацией. Он работал нормально. Как вы можете видеть, он смотрит на третье поле (поля, разделенные ':') и проверяет, что у него есть соответствующий UID, и в этом случае он печатает всю запись. Можете ли вы проверить, правильно ли вы ввели имя файла? Я должен был использовать полный путь (исправленный выше). – unxnut

+0

Благодарим за помощь! –