2010-07-06 2 views
2

나는 리눅스 박스 A를 작업하고 있었고, 난이 실행 : 예상대로, 몇 줄을 표시그렙 및 정규식 : 일관성없는 행동

grep '^\S*\s-' access_log 

.

그런 다음 컴퓨터 B로 옮겨서 정확히 동일한 명령을 시작했습니다. 그러나 이번에는 효과가 없었습니다.
내가 위해이를 시작했다 내가 필요로 무엇을 완수하기 :

grep '^[^ ]* -' access_log 

성공하기 전에, 나는이 모든 시도하지만 운 : 기계 B는 '아무튼처럼

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

같습니다 메타 문자 \ S와 \ s를 이해해야합니다.

상자 모두가 실행되었다 : 그렙 2.5.1 및 bash는 3.2.25

어떻게하는 것이 가능할까요?

건배의 grep man page으로 판단 댄

답변

1

. \s과 같은 것을 사용할 수 있다면 Perl 정규 표현식을 사용하고있는 것으로 보입니다. -P 옵션이 grep에 전달 될 때 사용됩니다. 따라서이 옵션은 컴퓨터 A에서는 자동으로 설정되고 컴퓨터 B에서는 자동으로 설정되지 않을 수 있습니다. 그 이유는 별칭 일 수도 있고 옵션이 GREP_OPTIONS에 설정되어있을 수도 있습니다.