Postagem em destaque

Simulando genericamente o comando split.


read + echo + cat + wc + bc + sed + bash

Linha de comando

$ read -p 'Arquivo: ' A; read -p 'Partes: ' P; echo $P | cat <(cat $A | wc -l) -| sed 'N;s/\n/\//' | bc | sed "s/.*/sed -r '1~&=;1~&i EOF' $A/" | bash | sed -r '/^[0-9]+$/{ N;s/(.*)\n(EOF)/\2\ncat>x\1<<\2/;}' | sed '1x;$G' | bash


Etapas
  • Lê os dados com read (arquivo de origem e total de arquivos a serem criados).
  •  Redireciona o valor de P para o cat, que mescla com o valor retornado pelo comando wc ao calcular o total de linhas do arquivo armazenado em A.
  • Envia para o sed que monta a operação aritmética de divisão e redireciona para o comando bc, que retorna o resultado que corresponde ao total de linhas que cada arquivo criado deverá ter.
  • O sed captura esse resultado e utiliza para montar a estrutura do próximo comando sed, definindo o intervalo de linhas a serem impressas e insere o delimitador EOF ao final.
  • Redireciona para o bash que executa.
  • O próximo sed captura a saída do comando, convertendo o número da linha em uma estrutura cat > Xnum << EOF.
  • Move e anexa a primeira linha com a última linha, redireciona para o bash que executada novamente e realiza a criação dos arquivos com suas respectivas linhas.
Clique na imagem para ampliar.
BUG: Não funciona perfeitamente em um arquivo que contenha somente números.
 
** Tenha sua solução postada aqui **

Se está enfrentando dificuldades no momento de montar sua linha de comando para resolução de um problema ou talvez não sabe por onde começar. Participe preenchendo o formulário a seguir. Descreva detalhes sobre o problema enfrentado e quem sabe a próximo X DA QUESTÃO seja o seu !!!

Formulário: X DA QUESTÃO

Comentários

Contato

Nome

E-mail *

Mensagem *