
Supongamos un archivo de texto de varias líneas ( file1
) que contiene rutas de archivo.
$ cat file1
./foo/foo
./foo/bar
./foo/baz
Me gustaría guardar solo los nombres de los archivos file2
y anteponer cada nombre de archivo con algunos caracteres especiales (por ejemplo, [#
).
Sé que puedo hacer esto mediante un bucle for simple, pero entiendo que esto se considera una práctica desfavorable.
for line in $(cat file1); do
echo "[#" $(basename "$line") >> file2;
done
Creo que esta tarea se puede realizar de forma más limpia a través de awk
, pero el siguiente código es solo un fragmento. ¿Cómo realizo la tarea anterior con awk
?
awk '{print "[#",$0=$(basename $0)}' $file1 > $file2
Respuesta1
Utilícelo /
como separador de campos e imprima el último campo:
$ awk -F/ '{print "[#"$NF}' file1
[#foo
[#bar
[#baz
Respuesta2
sed -e 's|.*/|[#|' file1
Resultado
[#foo
[#bar
[#baz