Tengo un ejemplo de archivo / etc / passwd como este:
tom:x:1000:1000:Work:/home/tom:/bin/bash
george:x:1000:1000:Work:/home/george:/bin/bash
bla:x:1000:1000:Work:/home/bla:/bin/bash
boo:x:1000:1000:Work:/home/boo:/bin/bash
bee:x:1000:1000:Work:/root/list:/bin/bash
Estoy tratando de enumerar todos los usuarios con una carpeta de inicio /home/
.
escribí
cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}'
donde e.txt es el texto que copié aquí.
Entiendo que hay un problema con la barra diagonal inversa que es un carácter de escape, pero ¿cómo lo soluciono para poder enumerarlos en una línea de un comando?
grep home e.txt | cut -d ":" -f 1
. Felicitaciones por su premio UUOC. Sin embargo, esta no es una buena solución. ¿Qué pasa si hay un servicio de "homebackups" que se ejecuta bajo un usuario separado llamado así por el demonio? Eso es un falso positivo.
cat > tool
variante de tales líneas de comando porque puede mejorar la claridad al mantener el flujo de izquierda a derecha de la entrada-procesamiento-salida de la cadena de tuberías. Que es menos eficiente, pero casi siempre de manera mínimamente. También hace que añadir una barra de progreso cuando sea pertinente y útil cuando se ejecuta de forma interactiva muy evidente (basta con sustituir cat
con pv
si está instalado).
cat
y canalizar herramientas comoawk
osed
similares, ya que se les puede dar el nombre de archivo como argumento.