A menos que eu esteja sentindo falta de algo, split
será dividida por linha se você usar -l
switch:
-l, --lines=NUMBER
put NUMBER lines per output file
então
split -l 1 inputfile
deve fazer o que quiser.
Existe um utilitário que divide o arquivo pelo símbolo de nova linha? por exemplo, se um arquivo contiver 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)
Eu já verifiquei o comando split
, ele só corta arquivos por tamanho de arquivo, não o que eu quero.
Se eu mesmo não escrevesse um utilitário, há alguma ferramenta padrão para usar?
awk '{print > $0".txt" }' inputfile
criaria um arquivo por linha exclusiva no inputfile com o nome do conteúdo dessas linhas (com uma extensão .txt
). Mas cuidado, 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.
A=0
while IFS= read -r LINE ; do
printf '%s\n' "$LINE" > newfile$A
(( A++ ))
done < "$INPUTFILE"
Tags text-processing split