Eu tenho um arquivo (user.csv) como este
ip,hostname,user,group,encryption,aduser,adattr
deseja imprimir todas as colunas classificadas por usuário,
Eu tentei awk -F ":" '{print|"$3 sort -n"}' user.csv
, não deu certo.
Eu tenho um arquivo (user.csv) como este
ip,hostname,user,group,encryption,aduser,adattr
deseja imprimir todas as colunas classificadas por usuário,
Eu tentei awk -F ":" '{print|"$3 sort -n"}' user.csv
, não deu certo.
Respostas:
Que tal apenas sort
.
sort -t, -nk3 user.csv
Onde
-t,
- define seu delimitador como ,
.
-n
- dá a classificação numérica. Adicionado desde que você o adicionou em sua tentativa. Se o seu campo de usuário for somente texto, você não precisará dele.
-k3
- define o campo (chave). o usuário é o terceiro campo.
sort -t, -nk3 filename.csv | sort -t, -nk6
- primeiro ele classificará pela coluna 3, em seguida, classificará pela coluna 6 para que a coluna 6 seja classificada corretamente em todo o caminho e para quaisquer linhas em que a coluna 6 seja igual, elas serão classificadas pela coluna 3 .
sort -t ',' -k3,3n -k6,6n
ficará melhor. -k3
usará a coluna 3 e o resto da linha.
Use sed para remover o ID do usuário duplicado, supondo que os IDs do usuário não contenham nenhum espaço.
awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
sort
já sabe como classificar por uma coluna específica, mas essa técnica - conhecida como transformação de Schwartzian - é útil quando o campo que você deseja classificar não é trivialmente uma coluna bem definida.
Você pode escolher um delimitador, neste caso eu escolhi dois pontos e imprimi a coluna número um, ordenando por ordem alfabética:
awk -F\: '{print $1|"sort -u"}' /etc/passwd
tente isso -
awk '{print $0|"sort -t',' -nk3 "}' user.csv
OU
sort -t',' -nk3 user.csv
awk -F "," '{print $0}' user.csv | sort -nk3 -t ','
Isso deve funcionar
sort -t, -k3 file