Eu tenho um arquivo grande e preciso dividir em dois arquivos. Suponha que no primeiro arquivo as 1000 linhas devam ser selecionadas e colocadas em outro arquivo e exclua essas linhas no primeiro arquivo.
Eu tentei usar, split
mas ele está criando vários pedaços.
text-processing
awk
split
csplit
Aravind
fonte
fonte
split --help
?Respostas:
A maneira mais fácil é provavelmente usar
head
etail
:Isso colocará as primeiras 1000 linhas de
input-file
dentrooutput1
e todas as linhas de 1001 até o final deoutput2
fonte
Eu acho que
split
é sua melhor abordagem.Tente usar a
-l xxxx
opção, em que xxxx é o número de linhas que você deseja em cada arquivo (o padrão é 1000).Você pode usar a
-n yy
opção se estiver mais preocupado com a quantidade de arquivos criados. O uso-n 2
dividirá seu arquivo em apenas 2 partes, independentemente da quantidade de linhas em cada arquivo.Você pode contar a quantidade de linhas no seu arquivo
wc -l filename
. Este é o comando 'wordcount' com a opção de linhas.Referências
man split
man wc
fonte
split -l 1000 bigfile && mv xaa piece1 && cat x?? > piece2 && rm x??
.Este é um trabalho para
csplit
:irá
s
dividir-se intencionalmenteinfile
, a primeira peçaxx00
- até, mas não incluindo a linha 1001, e a segunda peçaxx01
- as linhas restantes.Você pode jogar com as opções se precisar de nomes de arquivos de saída diferentes, por exemplo, usando
-f
e especificando um prefixo :produz dois arquivos nomeados
piece.00
epiece.01
Com um inteligente,
head
você também pode fazer algo como:fonte
csplit
. Muito agradável. (Eu só estou lendo a lista de comandos POSIX e teve enorme dificuldade para finalizar a minha cabeça em torno docsplit
propósito de comando na primeira Acontece que ele é realmente muito simples..) :)Uma maneira simples de fazer o que a pergunta pede, em um comando:
ou, para aqueles que realmente odeiam digitar comandos longos e intuitivamente compreensíveis,
fonte