2010-07-06 2 views
2

я работал на коробке А Linux и я бегу это:Grep и регулярное выражение: непоследовательность

grep '^\S*\s-' access_log 

Это отображается несколько строк, как и ожидалось.

Затем я перешел на машину B, и я запустил точно такую ​​же команду. Но на этот раз это не сработало.
я должен был начать это для того, чтобы сделать то, что мне было нужно:

grep '^[^ ]* -' access_log 

Перед сменив, я попробовал все из них, но не повезло:

grep '^\S* -' access_log 
grep '^\S*\s-' access_log  
grep -e '^\S* -' access_log 
grep -E '^\S* ' access_log  

Похоже, машина B Безразлично» t понимать метасимволы \ S и \ s.

Обе коробки были запущены: Grep 2.5.1 и 3.2.25 Баш

Как это возможно?

Приветствия, Dan

ответ

1

Судя по grep man page. Кажется, что если вы можете использовать такие вещи, как \s, вы используете регулярные выражения Perl. Которые используются, когда опция -P передается в grep. Таким образом, может быть, что этот параметр устанавливается автоматически на машине A, а не на машине B. Причиной этого может быть некоторый псевдоним, или опция установлена ​​в GREP_OPTIONS.

Смежные вопросы