У меня есть пример файла / etc / passwd, например:
tom:x:1000:1000:Work:/home/tom:/bin/bash
george:x:1000:1000:Work:/home/george:/bin/bash
bla:x:1000:1000:Work:/home/bla:/bin/bash
boo:x:1000:1000:Work:/home/boo:/bin/bash
bee:x:1000:1000:Work:/root/list:/bin/bash
Я пытаюсь перечислить всех пользователей с домашней папкой в /home/
.
я написал
cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}'
где e.txt - текст, который я скопировал здесь.
Я понимаю, что есть проблема с обратной косой чертой, которая является escape-символом, но как мне ее исправить, чтобы я мог перечислить их в одной строке команды?
grep home e.txt | cut -d ":" -f 1
. Поздравляем с вашей наградой UUOC. Однако это не очень хорошее решение. Что если существует служба «homebackups», которая работает под отдельным пользователем, названным в честь демона? Это ложный позитив.
cat > tool
вариант таких командных строк, потому что это может улучшить ясность, поддерживая поток слева направо ввода-обработки-вывода трубной цепи. Это является менее эффективным, но почти всегда минимально так. Он также делает добавление прогресс бар , где отношение и полезно при работе в интерактивном режиме очень очевидно (просто заменить cat
с , pv
если он установлен).
cat
и направлять инструментам, подобнымawk
илиsed
подобным, поскольку им можно дать имя файла в качестве аргумента.