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