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