Что бы вы ожидали после этого:
for /l %i in (1,1,100) do @more some.bbl | grep a | md5sum
Скорее всего, не это:
ec3ecb76408d4225ff23a25d0596e00f *-
13cfd899b90b9cd7aedb406a785e8eac *-
737e8898a65657f1a2ce8012ff1ffe82 *-
d4095243e56a7da3b31a352423a5417a *-
319db7810e677414ca1609238bdeba6f *-
31e626a8ce0732fda1fa7499c8b13dfa *-
006fe390f923d50348d65d0bbefa64d8 *-
77708f62cb2d61a45788a656d0979aee *-
cda10a9ab71c2bce4df069c479241349 *-
b01b71dc7dca11808ca989c4985513ca *-
c22a6f8b1cac9a93c4fe10b07a9f483a *-
0b04f4b24f3f183270eb7414f4f86e3d *-
5a2f8b8ad482ae8f70b7ce3384a7c9e2 *-
beccdbe737b48c02b48c4524cd89eede *-
a16fec5238cfe8dfff6b403ff943a8ca *-
ec0cd2edc0009abd14119915a8b563f4 *-
1e78f0012ca09aeade169f815415da40 *-
...
Я тоже волновалась, поэтому я провела пару проверок вменяемости:
for /l %i in (1,1,100) do @more some.bbl | md5sum
дает 100 раз
ace4f37f3a1433e29696a535c0b79f2c *-
То же самое для
for /l %i in (1,1,100) do @grep a some.bbl | md5sum
а также
d8753d755025a1119cd2910c6f5cb0de *-
more
, grep
и md5sum
работают отлично. Кроме того, труба перед md5sum
не является проблемой, так как
for /l %i in (1,1,100) do @more some.bbl | grep a > out%i
md5sum out*
подтверждает проблему. fc
выводам я не вижу разницы. diff
ИНГ их упивается невидимые различия, подтвержденные с помощью шестнадцатеричного редактора , чтобы быть различия в окончаниях строк в , казалось бы , случайных местах (и отличается от файла к файлу).
Проблема все еще видна, но не так часто, в этом примере:
for /l %i in (1,1,100) do @more some.bbl | grep "[a-z]" | md5sum
получая
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
ef23817185d41987c11cb1fc4371bb76 *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
e398e63b60cee3e271967f01350068f1 *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
b135bcfe0bcfb7f1c43fe1905164c31e *-
...
Теперь у меня заканчиваются идеи, в чем причина. Мне было бы все равно, если бы я не потерял ни одной действительной строки в таких случаях:
for /l %i in (1,1,100) do @more "some.bbl" | grep "\}$" | wc -l
Это дает
249
249
249
248
255
253
252
248
251
...
Чтобы воспроизвести похожие проблемы, вы можете использовать этот файл
for /l %i in (1,1,200) do @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX{Something1999a}>> some.bbl
Еще немного информации
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.
Почему это происходит?
Обновление: проблема также уходит, заменяя more
этим 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.