O que você espera que aconteça depois disso:
for /l %i in (1,1,100) do @more some.bbl | grep a | md5sum
Provavelmente, não isto:
ec3ecb76408d4225ff23a25d0596e00f *-
13cfd899b90b9cd7aedb406a785e8eac *-
737e8898a65657f1a2ce8012ff1ffe82 *-
d4095243e56a7da3b31a352423a5417a *-
319db7810e677414ca1609238bdeba6f *-
31e626a8ce0732fda1fa7499c8b13dfa *-
006fe390f923d50348d65d0bbefa64d8 *-
77708f62cb2d61a45788a656d0979aee *-
cda10a9ab71c2bce4df069c479241349 *-
b01b71dc7dca11808ca989c4985513ca *-
c22a6f8b1cac9a93c4fe10b07a9f483a *-
0b04f4b24f3f183270eb7414f4f86e3d *-
5a2f8b8ad482ae8f70b7ce3384a7c9e2 *-
beccdbe737b48c02b48c4524cd89eede *-
a16fec5238cfe8dfff6b403ff943a8ca *-
ec0cd2edc0009abd14119915a8b563f4 *-
1e78f0012ca09aeade169f815415da40 *-
...
Eu também estava preocupado, então fiz algumas verificações de sanidade:
for /l %i in (1,1,100) do @more some.bbl | md5sum
rende 100 vezes
ace4f37f3a1433e29696a535c0b79f2c *-
O mesmo para
for /l %i in (1,1,100) do @grep a some.bbl | md5sum
e
d8753d755025a1119cd2910c6f5cb0de *-
Portanto, more
, grep
e md5sum
funcionam bem sozinhos. Além disso, o pipe antes de md5sum
não é um problema, já que
for /l %i in (1,1,100) do @more some.bbl | grep a > out%i
md5sum out*
confirma o problema. fc
das saídas, não vejo diferença. diff
ing revela diferenças invisíveis, confirmadas por um editor hexadecimal como diferenças em finais de linha em lugares aparentemente aleatórios (e diferentes de arquivo para arquivo).
O problema ainda é visto, mas com menos frequência, neste exemplo:
for /l %i in (1,1,100) do @more some.bbl | grep "[a-z]" | md5sum
cedendo
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
ef23817185d41987c11cb1fc4371bb76 *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
e398e63b60cee3e271967f01350068f1 *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
...
Agora estou ficando sem idéias qual poderia ser a razão. Eu não me importaria tanto assim se não perdesse nenhuma linha válida em casos como este:
for /l %i in (1,1,100) do @more "some.bbl" | grep "\}$" | wc -l
Isso dá
249
249
249
248
255
253
252
248
251
...
Para reproduzir problemas semelhantes, você pode usar este arquivo
for /l %i in (1,1,200) do @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX{Something1999a}>> some.bbl
Mais algumas informações
C:\>ver
Microsoft Windows [Version 6.1.7601]
C:\>more /h
Displays output one screen at a time.
MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [drive:][path]filename
...
C:\>grep --ver
GNU grep 2.6.3
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
C:\>md5sum --ver
md5sum (GNU coreutils) 8.15
Packaged by Cygwin (8.15-1)
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Ulrich Drepper, Scott Miller, and David Madore.
Por que isso está acontecendo?
Atualização: O problema também desaparece, substituindo more
por esse cat
:
C:\>cat --ver
cat (GNU coreutils) 8.15
Packaged by Cygwin (8.15-1)
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Torbjörn Granlund and Richard M. Stallman.