Hello для назначения я был дан файл, который отформатирован как таковойИспользование фильтров внутри команды вырезать
k2mff:x:32162:30:NJIT Amateur Radio Club:/afs/cad/u/k/2/k2mff:/usr/local/etc/klub/clubshell
senate:x:32164:30:The NJIT Student Senate:/afs/cad/u/s/e/senate:/usr/local/etc/klub/clubshell
ge:x:32184:30:Hongya Ge:/afs/cad/u/g/e/ge:/bin/tcsh
spasovic:x:32186:30:lazar spasovic fac/staff:/afs/cad/u/s/p/spasovic:/bin/csh
etc...
Я использую команду Grep, чтобы получить смелые поля:
grep "csh" /etc/passwd | cut -d ":" -f 3,5,6
Мой вопрос, так как команда cut
использует разделитель, поле шесть вернется
/afs/cad/u/s/p/spasovic
есть путь, который я могу получить, особенно для шестого поля, персонажей за последним /
в команде cut
? Или мне нужно отфильтровать вывод на другую команду?
Grep «CSH»/и т.д./пароль | cut -d ":" -f 3,5,6 | sed 's # /. */## g' может работать для вас –
Или еще лучше, 'awk -F: '$ 7 ~/\/csh $/{print $ 3, $ 5, gensub (". */"," "," g ", $ 6)} '/ etc/passwd'. Или, если у вас нет пользователей, у которых есть домашний каталог, не эквивалентный их имени пользователя - 'awk -F: '$ 7 ~/\/csh $/{print $ 3, $ 5, $ 1}'/etc/passwd' – twalberg