
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 sed
para 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 s
comando sed
para evitarEl síndrome del palillo inclinado..
Otro enfoque sed
es 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 cut
y 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