2014-01-05 1 views
0

grep에서만 질문이 있습니다.Grep : 알 수없는 구문 입력 (2 대의 다른 컴퓨터에서 : 1 대의 컴퓨터 결과가 좋으며 다른 하나는 오류입니다)

(pinkpink) (OrangeRed에) (bluegreen) (<()>) (< ( )>) (purplegreen) (pinkblue) (pinkred) :: George->이 입력으로부터

(녹색) (녹색) (녹색) (희석) (희석) (희석) (희석) (희박) (희석) (청록색) (보라색) (청색) (청색) (오렌지색) (<()>) (오렌지색) >) (<()>) (분홍색) (녹색) (빨강 파랑) :: 조지 -> 탐 -> (<()>) (< (검은 색) (핑크색) (핑크색) (핑크색) (( )>) (<()>) :: Phil-> 에드나 -> (< (

내가 출력 확인해야

:

:: George-> Phil->

:: George-> Tom->

:: Phil-> Edna->

내 명령했다 :

grep -o -i '::\+[Harry|Edna|Phil|George|Tom]\+->\+[harry|edna|phil|george|tom]\+->' 
FILE 

그것은 당신 같이 내 컴퓨터에 성공적으로 출력을 생산 스크린 샷에서 볼 수 있습니다. 나는 우분투 13.10을 사용하고있다.

Success output

는하지만, 내 강사는 명령이 라고 말했다 "항목에 대한 알 수없는 구문." 그의 컴퓨터에입니다. 나는 어디로 잘못 갔는가? grep 명령이 교차 검사를 위해 다른 기계에서 "알 수없는 구문 입력"이 아닌지 어떻게 확인할 수 있습니까? 다른 기계가 다른 결과를 낼 수 있다면, 가능한 모든 종류의 리눅스와 다른 하드웨어에 대해 어떻게 그리고 어디에서 신뢰할 수있는 결과를 얻을 수 있습니까?

대단히 감사합니다.

답변

1

문자 클래스를 잘못 사용하고 있습니다. 정규 표현식 [a|bc]a, |, b 또는 c 네 개의 나열된 문자 중 하나 인 단일 문자와 일치합니다. 당신은 분명히 리터럴 문자열 a 또는 리터럴 문자열 bc과 일치하는 (a|bc)을 원하지만, grep -E (일명 egrep)이 필요합니다.

또한 ::+ 둘 개 이상의 대장 증상 일치하고 (a|bc)+a 또는 bc, 또는 aaaaabcabcbcbcaa 즉 어떤 하나의 1 개 이상의 시퀀스를 일치한다.

+0

그래, 내 강사도 그렇게 말했습니다. 하지만, 왜 내 리눅스 13.10 결과가 올바르게 나타납니다! 너는 어떤 생각을 가지고 있니? 내 컴퓨터에서 결과가 정확하다면 내 명령에 아무 문제가 없다고 생각했습니다. – mprabuw

+0

랜덤 행운. 표현은 단지 필요한 입력과 일치합니다. – tripleee

+0

하하, 운신! 잘. 오케이. 답변 해 주셔서 대단히 감사합니다. :) – mprabuw

관련 문제