cut, sirve para cortar información en forma de columnas dentro de un archivo.
Considerar los siguientes parámetros del comando
-d indica cómo es el delimitador
-f indica la columna a considerar.
-s muestra las líneas que contienen el delimitador indicado.
--output-delimiter= depliega la info cambiando el caracter delimitador entre columnas
Obtener los nombres de usuario del archivo /etc/shadow
Vista del archivo[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
...
[root@localhost ~]#
En el siguiente ejemplo el archivo /etc/shadow usa el carcter ":" como separador de columnas.
[root@localhost ~]# cut -d':' -f1 /etc/shadow
root
bin
daemon
...
[root@localhost ~]#
root:/root:/bin/bash
bin:/bin:/sbin/nologin
daemon:/sbin:/sbin/nologin
...
[root@localhost ~]#
[root@localhost ~]# cut -d'!' -f1 -s /etc/shadow
avahi-autoipd:
bus:
polkitd:
tss:
postfix:
sshd:
serest5:
userest6:
systemd-bus-proxy:
systemd-network:
[root@localhost ~]#
[root@localhost ~]# cut -d':' -f1 /etc/shadow
root
bin
daemon
...
[root@localhost ~]#
Obtener el nombre, directorio y bash de los usuarios del archivo /etc/shadow
[root@localhost ~]# cut -d':' -f1,6,7 /etc/passwdroot:/root:/bin/bash
bin:/bin:/sbin/nologin
daemon:/sbin:/sbin/nologin
...
[root@localhost ~]#
Obtener los usuarios que no tienen passwd en el archivo /etc/shadow
Para obtener aquellos usuarios que no tienen passwd, utilizamos la opción -s que indica que sólo se muestran las líneas que tienen el delimitador.
Vista del archivo
[root@localhost ~]# cat /etc/shadow
root:$6$ZSjJBeB8mYNRRqgV$nEHPaQu6wXf29mhqR9fgMVBHwMzBgjAilSeIJKECZ3MXz.sAesYc0CZ0KLgDnbihEcpmNHdBbQToxa.5hKuaY0:16756:0:99999:7:::dbus:!!:16756::::::...copito:$6$MMxS6dyY$KvEI/15ND667Pex44.2dthmC8XQyGCOJbzCDjWB0w1q0hFB6CoxrSQGhTnqtbhOFikJEhOs9H410o1L6RUgBR/:16835:0:99999:7::29220:userest:$6$h9oph1io$u6ALg/I7g8baWto3H782KikqLJUfAxL/mCAWWeusg5X.GNOvnig2ofO.DSVgSoSWRgqrEQchq28GdF8IatA25/:0:0:99999:7:::userest4:$6$BfT6WGBS$J/50aQMc4UMsMr/eqpOrQ9q1GCPdJU/V13O9J/VBKmtVGR3HTjFjXMpusWmRq5ip3CnYCq//kDAa3gWMc1ZEX.:0:0:99999:7::16842:userest5:!!:16839:0:99999:7:::userest6:!!:16839:0:99999:7:::...[root@localhost ~]#
El truco es utilizar dos veces el comando:
La primera vez como delimitador el caracter "!" que es parte de la segunda columna, y aparece sólo cuando el usuario no tiene passwd "!!"
[root@localhost ~]# cut -d'!' -f1 -s /etc/shadow
avahi-autoipd:
bus:
polkitd:
tss:
postfix:
sshd:
serest5:
userest6:
systemd-bus-proxy:
systemd-network:
[root@localhost ~]#
La segunda vez, sólo para separar el caracter ":" que queda al final de cada usuario.
[root@localhost ~]# cut -d'!' -f1 -s /etc/shadow | cut -d':' -f1avahi-autoipddbuspolkitdtsspostfixsshduserest5userest6systemd-bus-proxysystemd-network[root@localhost ~]#
NOTA: para el ejericio anterior no sirve utilizar el comando grep para filtrar por "!!" ya que ocurre lo siguiente:
[root@localhost ~]# grep "!!" /etc/shadowgrep "cat /etc/shadow" /etc/shadow[root@localhost ~]#
Sin embargo sí lo podemos utilizar para otro tipo de filtros, tal como el siguiente ejemplo:
Obtener todos los usuarios que utilizan bash
[root@localhost ~]# grep "/bin/bash" /etc/passwd | cut -d':' -f1rootuserest4userest5userest6[root@localhost ~]#
Cambiar el caracter delimitador en la salida de información.
Es posible cambiar el caracter delimitador entre columnas en la información desplegada.
[root@localhost ~]# cut -d':' -f1,2,3 --output-delimiter=';' /etc/passwd root;x;0bin;x;1daemon;x;2...[root@localhost ~]#
Cambiar las columnas como líneas en la salida de información.
[root@localhost ~]# cut -d':' -f1,2,3 --output-delimiter=$'\n' /etc/passwd rootx0binx1daemonx2...[root@localhost ~]#
No hay comentarios:
Publicar un comentario