У меня проблемы с поиском строк с .
в сложных (цепочечных) командах grep.
Это моя ошибка или ошибка?
grep '\.' filename | grep 1 # works correctly (finds lines with '.' and '1')
grep 1 filename | grep '\.' # fails: ignores 2nd grep, returns lines with or without '.'
Это не канал, который вызывает это;это действительно что-то о grep.
Это откровенно кажется неправдоподобным, но это правда:
cat filename | grep 1 | grep '\.' # works correctly (and provides an easy work-around for the bug)
Добавление дополнительной защиты не помогает:
grep 1 filename | grep '\\.' # fails
Если есть что-топозади или перед символом подстановки, это работает:
grep 1 filename | grep 'a\.' # works
grep 1 filename | grep '\.a' # works
Но не, если что-то находится в диапазоне:
grep 1 filename | grep '[0-9]\.' # fails
grep 1 filename | grep '\.[0-9]' # fails
Я не могу поверить, что это действительно ошибка - ядолжно быть чего-то не хватает, верно?
Спасибо!
uname -a
Linux conception 2.6.32-33-generic #70-Ubuntu SMP Thu Jul 7 21:09:46 UTC 2011 i686 GNU/Linux