você está aqui: Home  → Arquivo de Mensagens Workshop Gratuito sobre Programação Shell Linux

O comando csplit

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 19 de Junho de 1997

Outro comando também utilizado para se dividir um arquivo em vários outros é o comando csplit (Content Split).

Ao contrário do comando split, abordado na dica anterior, o comando csplit permite que se especifique uma string que irá indicar o delimitador de cada um dos novos arquivos.

Tomemos como exemplo o arquivo abaixo, chamado arq1:


Capítulo 1

Era uma vez, era uma vez três porquinhos, Palhaço, Palito e Pedrito.


Capítulo 2 E o Lobo Mau, ... Capítulo 3 E o caçador, matou o Lobo Mau, casou-se com a Chapeuzinho Vermelho, e viveram felizes para sempre.

The End

@ Fim arq1

O autor, colocou todos os capítulos do livro em apenas um arquivo e depois se arrependeu. Agora ele quer criar vários arquivos contendo um capítulo cada. O comando abaixo pode resolver este problema:

  % csplit -f Capit arq1 "/Capitulo/" {2}
  % ls -l
  total 4
  -rw-r--r--   1 queiroz  supsof         0 Jun 17 18:31 Capit00
  -rw-r--r--   1 queiroz  supsof        85 Jun 17 18:31 Capit01
  -rw-r--r--   1 queiroz  supsof        29 Jun 17 18:31 Capit02
  -rw-r--r--   1 queiroz  supsof       136 Jun 17 18:31 Capit03
  -rw-r--r--   1 queiroz  supsof       250 Jun 17 18:11 arq1

Traduzindo, o comando csplit irá criar vários arquivos iniciados em "Capit", até um máximo de 3 arquivos (parâmetro {2}, computa-se o número entre colchetes + 1). Este valor indica o número de vezes que o comando será repetido. No nosso exemplo, foi especificado exatamente o número de capítulos contidos no arquivo original (3). Caso não conheçamos este valor, podemos especificar um número que sabemos maior que o número de arquivos existentes. O comando csplit irá reclamar, e apagar todos os arquivos já criados. Para evitarmos que isto aconteça, basta especificar a flag "-k", ou seja, a reclamação continuará sendo feita, mas o trabalho já feito não será removido. O que não pode é se especificar um número inferior ao desejado. Neste caso, o comando ficaria como:

  % csplit -k -f Capit arq1 "/Capitulo/" {9}
  csplit: {9} - out of range

A quebra será feita, tomando-se por base o nosso exemplo, antes da string Capitulo, exclusive. Devido a isto, o primeiro arquivo, Capit00, está vazio. Os arquivos criados, à exceção do arquivo Capit00 que está vazio, contêm:


  Capitulo 1
  Era uma vez, era uma vez três porquinhos, Palhaço, Palito e Pedrito.


  Capitulo 2
  E o Lobo Mau, ...


  Capitulo 3
  E o caçador, matou o Lobo Mau, casou-se com a Chapeuzinho Vermelho,
  e viveram felizes para sempre.
                  The End

O comando csplit todavia, é um pouco complexo. Existe um programa de domínio público chamado slice, que é muito mais flexível e fácil de usar que o comando csplit. O programa slice (e onde encontrá-lo), será abordado em breve nesta lista.

Dica Humorística :-)


I'm busy with my new shell replacement login script, and it's almost foolproof. Let's just say it pops up with:

"Yes means No and No means Yes. Delete all files [Y]? "

upon login. I'm really starting to worry about the number of account breakins we've been having recently.... The manager isn't though. His main concern appears to be the number of computer-related fatalities on campus. Funny world, isn't it?

I flip the excuse card. "DOPPLER EFFECT" Sounds implausible enough that it's plausable - with a little work of course.

The phone, the bane of my existance, rings.

"Hello, Computer Room" I say, being helpful

"Is this the Technicians?" The caller asks.

Amazing the number of deaf people that use these things. What the hell, I'm bored..

"Yes it is" I lie (Nixon could've done with me)

"I've got a problem with my floppy drive, it doesn't seem to be reading all the time"

"Hmmm. How old is the drive?"

"About a year.."

"And it sometimes fails and sometimes works, but it's starting to fail more and more?"


"Yeah, it's the Doppler effect of magnetism.."

"I thought that only happened with light and sound?"

Bullshit mode ON<

"Yes, well it's been found that on a spinning surface, like a disk, the particle's magnetic alignment changes, especially when the head is stationary and slightly magnetised in respect to it."

"Duh. Oh"

"So, what you need to do is to demagnetise the head. Have you got a disk head demagnetising loop?"

Hmm.... No?"

"OK, we'll have to do it the hard way. Have you got your original diskettes for your software?"


"Right, chuck them in the drive, one by one, and format them."


"Don't worry, it won't work - remember the drive is failing. All that happens is that the virgin magnetic field of the disks realigns the magnetic field of the head, because they weren't written by a doppler effected drive."

"Oh, yeah!"

"So, when it gives you a write error and asks if you want to continue, you say yes. Do it with all your original diskettes, then, to complete the demagnetising process, run a head cleaning diskette through the drive as well, which will pick up the stray magenetic particles clinging to the head."

"Oh. Ok. Thanks"

"Don't thank me - IT'S MY JOB"

I put the phone down, it rings again. It's the big boss.

"Simon, could you come to my office please?"


Quick as I can, I press the panic button on our LAN-Analyser, or to be more precise, the "Generate 90% random traffic" button

"Sure, would you like me to come now, or..

The other phone rings. I chuck it on hands free

"Hello, Computer Room, Simon Here, How can I help?"

"THE NETWORK IS DOWN, ALL OUR PCS HAVE SHIT THEMSELVES!" the voice on hands -free screams into the mouthpeice of the other phone

"I see" I say calmly "Yes, our Monitor shows it up, it looks to be a bad segment of thinwire - please hold the line while I unplug it"

I press the "I just got a raise" button (AKA "Stop Traffic Generation") on the Lan Analyser, and almost immediately the user shouts back "Excellent, it's working now, thanks"

"That's ok, don't mention it. Have a nice day"

The big-boss has been listening to all this, so I reckon that the trip to his office won't be so bad after all. I tell him I'll be right down as soon as I secure the net and hang up. On the way down, I invent a new buzzword which always keep management happy. Complete Transient Lockout. Sounds much better than pulling the plug. Like Master-Reset sounds better than off-switch.

I get to his office and the staffing officer is there too. Uh-oh.

"Simon - How would you like to be our System Manager?"


"Well... I don't know, I like that hands on.."

"Extra 10 grand a year, Varisty Car.."




....And so ends the saga, as it should have at #10.

<spt (a) grace waikato ac nz>

Veja a relação completa dos artigos de Rubens Queiroz de Almeida