Búsqueda de patrones de Linux

Búsqueda de patrones de Linux

Si tengo un archivo con mucha información de directorio como:

/home/svdev/src/lib
/home/dev/project/doc
/home/server/etc

Quiero obtener el nombre del directorio al lado del directorio "/home". Entonces, para este conjunto de datos, mi salida debería ser svdev, dev, server.

Respuesta1

$ sed -e 's,^/home/,,' -e 's,/.*,,' file
svdev
dev
server

Esto se utiliza sedpara eliminar primero la ruta inicial /home/y luego todo lo que viene después de la primera /en el resto de la línea.

Estoy usando comas como delimitador del scomando sedpara evitarEl síndrome del palillo inclinado..

Otro enfoque sedes reemplazar toda la línea con la segunda cosa entre /:

$ sed 's,/[^/]*/\([^/]*\)/.*,\1,' file
svdev
dev
server

Respuesta2

Una forma muy cruda de hacerlo usando cuty especificando barra diagonal como delimitador:

cut -d "/" -f 3 thefile

Producción:

svdev
dev
server

Suponiendo que todos los directorios comiencen con/home

Respuesta3

si desea imprimir los subdirectorios de /home

find /home -type d -maxdepth 1 -mindepth 1

si las rutas son el contenido de un archivo,

awk -F '/' '{printf "%s, ",$3}' file.txt

información relacionada