cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort -k 1 |sort -k 2
Eu não acho que o primeiro tipo seja estritamente necessário, já que é o tipo padrão.
Se você quiser mudar as colunas, simplesmente use o awk:
cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort -k 2 | awk '{print $2,$1}'
que sugere usar o awk para obter:
awk -F ":" '{print $7,$1}' /etc/passwd | sort
O que não está usando o corte, mas não tenho certeza do quanto é difícil usar um corte para você.
Se você não quiser usar o awk, ainda poderá alternar a ordem das colunas.
Aqui está um exemplo usando loop while e leia:
cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort -k 2 | while read -r c1 c2;do echo "$c2 $c1";done
Outra opção usando "cortar e colar":
paste <(cut -f7 -d: /etc/passwd) <(cut -f1 -d: /etc/passwd) | sort
ou, se o espaço único for uma exigência difícil:
paste -d " " <(cut -f7 -d: /etc/passwd) <(cut -f1 -d: /etc/passwd) | sort
simplesmente redireciona qualquer uma das opções listadas para um arquivo usando o > ~ / usershells.txt
é claro que você ainda pode usar o cut'n'paste para manter o pedido original e ainda classificar os shells:
paste -d " " <(cut -f1 -d: /etc/passwd) <(cut -f7 -d: /etc/passwd) | sort -k 2 > ~/usershells.txt