Conduzindo operação de string multilinha com awk em vez de for-loop

Conduzindo operação de string multilinha com awk em vez de for-loop

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 file2e 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

informação relacionada