Tengo un archivo (user.csv) como este
ip,hostname,user,group,encryption,aduser,adattr
desea imprimir todas las columnas ordenadas por usuario,
Lo intenté awk -F ":" '{print|"$3 sort -n"}' user.csv
, no funciona.
Tengo un archivo (user.csv) como este
ip,hostname,user,group,encryption,aduser,adattr
desea imprimir todas las columnas ordenadas por usuario,
Lo intenté awk -F ":" '{print|"$3 sort -n"}' user.csv
, no funciona.
Respuestas:
¿Qué tal solo sort
?
sort -t, -nk3 user.csv
dónde
-t,
- define su delimitador como ,
.
-n
- le da orden numérico. Agregado desde que lo agregó en su intento. Si su campo de usuario es solo texto, entonces no lo necesita.
-k3
- define el campo (clave). usuario es el tercer campo.
sort -t, -nk3 filename.csv | sort -t, -nk6
- primero se ordenará por la columna 3, luego lo ordenará por la columna 6 para que la columna 6 esté ordenada correctamente hasta el final y para cualquier fila donde la columna 6 sea la misma, se ordenarán por la columna 3 .
sort -t ',' -k3,3n -k6,6n
será mejor. -k3
usará la columna 3 y el resto de la línea.
Utilice sed para eliminar el ID de usuario duplicado, asumiendo que los ID de usuario no contienen espacios.
awk -F, '{ print $3, $0 }' user.csv | sort | sed 's/^.* //'
sort
ya sabe cómo ordenar por una columna en particular, pero esta técnica, conocida como la transformación de Schwartzian , es útil cuando el campo que desea ordenar no es trivialmente una columna bien definida.
Puede elegir un delimitador, en este caso elegí dos puntos e imprimí la columna número uno, ordenando por orden alfabético:
awk -F\: '{print $1|"sort -u"}' /etc/passwd
prueba esto -
awk '{print $0|"sort -t',' -nk3 "}' user.csv
O
sort -t',' -nk3 user.csv
awk -F "," '{print $0}' user.csv | sort -nk3 -t ','
Esto debería funcionar
sort -t, -k3 file