AprendiNoLinux
(usa Ubuntu)
Enviado em 02/04/2012 - 22:00h
O problema em si relatado jaz solucionado, mas agora entrei em uma sinuca de bico e deve ser algo bem tolo mas estou quebrando a cabeça para resolver em uma única linha de comando.
Já tenho uma solução para o problema usando a POG de sempre. Queria uma saída mais limpa. Vamos ao problema.
Imagine que o conteúdo abaixo é um arquivo texto que tem de 150.000 a 500.000 linhas.
Preciso pegar uma quantidade de linhas de cada vez e gerar um outro arquivo.
Esta parte é fácil, usei o comando
head dizendo quantas linhas deste arquivo eu preciso e envio para um novo arquivo.
O problema é que estas linha que enviei ao novo arquivo eu preciso retirar deste arquivo de 150.000 linhas.
arquivo completo abaixo em nosso teste tem 150.000
Completo: arq150000.txt
20966 4 -rwxrwxr-x 1 GaTux www 2033 Mar 26 18:40 ./arq_tags_186999404.txt
20967 4 -rwxrwxr-x 1 GaTux www 1775 Mar 26 23:04 ./arq_tags_435306502.txt
20968 4 -rwxrwxr-x 1 GaTux www 2232 Mar 27 01:48 ./arq_tags_464070146.txt
20969 4 -rwxrwxr-x 1 GaTux www 2184 Mar 26 23:00 ./arq_tags_247793561.txt
20970 4 -rwxrwxr-x 1 GaTux www 1944 Mar 26 23:30 ./arq_tags_359819601.txt
20971 4 -rwxrwxr-x 1 GaTux www 1854 Mar 26 23:00 ./arq_tags_40587696.txt
20972 4 -rwxrwxr-x 1 GaTux www 2097 Mar 27 00:29 ./arq_tags_108068330.txt
20973 4 -rwxrwxr-x 1 GaTux www 1978 Mar 26 19:20 ./arq_tags_228116164.txt
20974 4 -rwxrwxr-x 1 GaTux www 1934 Mar 26 21:58 ./arq_tags_87729349.txt
20975 4 -rwxrwxr-x 1 GaTux www 1911 Mar 26 23:24 ./arq_tags_153845672.txt
20976 4 -rwxrwxr-x 1 GaTux www 2170 Mar 26 19:45 ./arq_tags_378751570.txt
20977 4 -rwxrwxr-x 1 GaTux www 2106 Mar 26 22:21 ./arq_tags_420569921.txt
20978 4 -rwxrwxr-x 1 GaTux www 2043 Mar 26 20:52 ./arq_tags_377060627.txt
20979 4 -rwxrwxr-x 1 GaTux www 1862 Mar 27 01:54 ./arq_tags_386733491.txt
20980 4 -rwxrwxr-x 1 GaTux www 1879 Mar 27 03:17 ./arq_tags_364654716.txt
20981 4 -rwxrwxr-x 1 GaTux www 2093 Mar 26 22:54 ./arq_tags_488017917.txt
20982 4 -rwxrwxr-x 1 GaTux www 2156 Mar 26 22:38 ./arq_tags_311716549.txt
20983 4 -rwxrwxr-x 1 GaTux www 2032 Mar 26 21:14 ./arq_tags_497012787.txt
20984 4 -rwxrwxr-x 1 GaTux www 1898 Mar 26 22:07 ./arq_tags_238815135.txt
20985 4 -rwxrwxr-x 1 GaTux www 1982 Mar 26 19:39 ./arq_tags_75636656.txt
20986 4 -rwxrwxr-x 1 GaTux www 2159 Mar 27 00:25 ./arq_tags_188937249.txt
20987 4 -rwxrwxr-x 1 GaTux www 1763 Mar 27 02:05 ./arq_tags_310999058.txt
20988 4 -rwxrwxr-x 1 GaTux www 1842 Mar 26 19:29 ./arq_tags_134247188.txt
20989 4 -rwxrwxr-x 1 GaTux www 1958 Mar 27 00:47 ./arq_tags_331621256.txt
20990 8 -rwxrwxr-x 1 GaTux www 4668 Mar 26 22:45 ./arq_tags_309756929.txt
20991 4 -rwxrwxr-x 1 GaTux www 2035 Mar 26 18:31 ./arq_tags_461930380.txt
20992 4 -rwxrwxr-x 1 GaTux www 1888 Mar 26 22:17 ./arq_tags_274771577.txt
20993 4 -rwxrwxr-x 1 GaTux www 1991 Mar 26 22:46 ./arq_tags_242991309.txt
20994 4 -rwxrwxr-x 1 GaTux www 2024 Mar 26 22:44 ./arq_tags_168691120.txt
20995 4 -rwxrwxr-x 1 GaTux www 1935 Mar 26 21:52 ./arq_tags_195557193.txt
20996 8 -rwxrwxr-x 1 GaTux www 4330 Mar 26 23:46 ./arq_tags_350095235.txt
20997 4 -rwxrwxr-x 1 GaTux www 1995 Mar 27 09:42 ./arq_tags_466574252.txt
20998 4 -rwxrwxr-x 1 GaTux www 1943 Mar 26 20:13 ./arq_tags_203206125.txt
usando o comando head eu separei 50.000 registros. Em nosso exemplo na tela vamos dizer que forma 5 aqui no forum.
filtrado: arq50000.txt
20966 4 -rwxrwxr-x 1 GaTux www 2033 Mar 26 18:40 ./arq_tags_186999404.txt
20967 4 -rwxrwxr-x 1 GaTux www 1775 Mar 26 23:04 ./arq_tags_435306502.txt
20968 4 -rwxrwxr-x 1 GaTux www 2232 Mar 27 01:48 ./arq_tags_464070146.txt
20969 4 -rwxrwxr-x 1 GaTux www 2184 Mar 26 23:00 ./arq_tags_247793561.txt
20970 4 -rwxrwxr-x 1 GaTux www 1944 Mar 26 23:30 ./arq_tags_359819601.txt
A próxima operação eu preciso que o arquivo Completo: arq150000.txt fique com 50.000 linhas a menos. Justamente as linhas que estão no arquivo filtrado: arq50000.txt
Tentei com o comando
grep usando
-i -v conforme um exemplo que vi no livro do Aurélio, mas sem sucesso.
Para quebrar o galho, fiz uma POG que gera um novo arquivo usando o comando
while após ele ficar sabendo que já percorreu 50.000 linhas, mas este processo é muito moroso para gerar as outras 100.000 para o novo arquivo retirando as 50.000 que já usei.
Queria tentar com um único comando gerar o arquivo final com 100.000. Talvez o
sed fosse o comando, mas não encontrei um opção para gerar um novo arquivo com base em uma linha em diante. O
awk talvez fosse a solução porque ele talvez faça um while interno.
Continuo tentando uma saída elegante, mas se alguém tiver uma luz por favor ;)
Já queimei uma pá de "neurônios hoje" e nada de achar uma solução :)