
Suponha um arquivo de texto multilinha ( file1
) que contém caminhos de arquivo.
$ cat file1
./foo/foo
./foo/bar
./foo/baz
Gostaria de salvar apenas os nomes dos arquivos file2
e anexar cada nome de arquivo com alguns caracteres especiais (por exemplo, [#
).
Eu sei que posso fazer isso através de um loop for simples, mas entendo que isso é considerado uma prática desfavorável.
for line in $(cat file1); do
echo "[#" $(basename "$line") >> file2;
done
Acredito que essa tarefa possa ser feita de forma mais limpa via awk
, mas o código abaixo é apenas um fragmento. Como executo a tarefa acima com awk
?
awk '{print "[#",$0=$(basename $0)}' $file1 > $file2
Responder1
Use /
como separador de campos e imprima o último campo:
$ awk -F/ '{print "[#"$NF}' file1
[#foo
[#bar
[#baz
Responder2
sed -e 's|.*/|[#|' file1
Resultado
[#foo
[#bar
[#baz