Existe um utilitário que divide arquivos por símbolo de nova linha? por exemplo, se um arquivo contém as seguintes linhas,
aa
bbb
cccc
Se eu quiser dividi-lo em 3 arquivos, a saída desejada seria:
aa
, bbb
E cccc
(em 3 arquivos diferentes)
Já verifiquei o split
comando, ele só corta arquivo por tamanho de arquivo, não o que eu quero.
Se eu não escrevi um utilitário, existe alguma ferramenta padrão para usar?
Responder1
A menos que esteja faltando alguma coisa, split
é dividido por linha se você usar -l
o switch:
-l, --lines=NUMBER
put NUMBER lines per output file
então
split -l 1 inputfile
deve fazer o que quiser.
Responder2
awk '{print > $0".txt" }' inputfile
criaria um arquivo por linha exclusiva no arquivo de entrada com o nome do conteúdo dessas linhas (com uma .txt
extensão). Mas esteja ciente de que quando o limite de arquivos abertos simultâneos for atingido, algumas awk
implementações falharão.
Ou
awk '{f = "output_file." NR; print $0 > f; close(f)}' inputfile
Para ter arquivos de saída numerados.
Responder3
A=0
while IFS= read -r LINE ; do
printf '%s\n' "$LINE" > newfile$A
(( A++ ))
done < "$INPUTFILE"