Esqueça usando grep ou awk e faça isso em seu shell.
while IFS= read -r line
do echo "$line" > "$line"
done < FILE
Sou iniciante em scripts.
O que estou tentando fazer.
Eu tenho um arquivo de texto que se parece com isso (exemplo):
hello
hi there
apple
Estou tentando criar um script que salve cada linha como um novo arquivo separado com o conteúdo da linha como nome de arquivo.
O nome dos arquivos deve ser o seguinte (sem a extensão .txt para os arquivos de saída):
hello
hi there
apple
Como posso usar grep ou awk para salvar cada linha de um arquivo de texto como um novo arquivo com o conteúdo da linha como nome de arquivo (sem a extensão .txt).
Obrigado por qualquer ajuda.
Esqueça usando grep ou awk e faça isso em seu shell.
while IFS= read -r line
do echo "$line" > "$line"
done < FILE
Você está determinado a usar o Grep / Awk?
Existe uma maneira muito mais fácil de fazer isso:
while read f; do echo "$f" > "$f"; done<file.txt
Certifique-se de usar aspas, especialmente para o nome do arquivo.
Você não precisa de um loop se usar awk
- print
(por conta própria) é equivalente a print $0
, em que $0
é a linha de entrada completa, sem o% de\n
. O seguinte é suficiente:
awk '{print>$0}' file
Tags command-line bash grep awk linux