Divida o arquivo em vários arquivos pequenos, separados pelo símbolo de nova linha

Divida o arquivo em vários arquivos pequenos, separados pelo símbolo de nova linha

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, bbbE cccc(em 3 arquivos diferentes)

Já verifiquei o splitcomando, 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 -lo 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 .txtextensão). Mas esteja ciente de que quando o limite de arquivos abertos simultâneos for atingido, algumas awkimplementaçõ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"

informação relacionada