2009-10-31 3 views
0

테스트라는 텍스트 파일에서 주어진 패턴을 검색하는 첫 번째 스크립트를 작성하려고합니다. 스크립트는 다음과 같습니다.foreach 일치하지 않는 -C 쉘 스크립트

#! /bin/csh 
echo -n "enter pattern: " 
    set pattern = $< 
    foreach word (`cat test`) 
     echo $word | egrep $pattern 
    end 

실행하려고하면 메시지가 나타납니다. 일치하는 항목을 찾을 수 없습니다. 문제가 (cat test)에 의한 것 같습니다. 어떤 도움이라도 대단히 감사 할 것입니다.

+0

공백없이 공백으로 작동합니다. –

+0

아마도 C 쉘에 문제가있을 수 있습니다. – Mike55

답변

1

C 쉘이어야합니까?

awk 'BEGIN{ 
printf "Enter Pattern: " 
getline pattern < "-" 
} 
$0 ~ pattern{ 
    print 
} 
' myfile 
+0

예, 불행히도 않습니다. – Mike55

+0

ok problme이 해결되었습니다. 열기 후에 대괄호를 닫기 전에 공백이 있어야합니다. – Mike55

1

@Pat - awk를 사용하여 파일을 검색하는 방법을 배울 수 있습니다. 파일에서 단어를 반복하고 각 단어 위로 egrep을 실행하는 것은 이상한 방법입니다. 가장 간결한 해결책을 찾기보다는 C 셸 루프에 대해 배우고 있다고 가정합니다. 당신은 한 번에 전체 파일에 대해 일치 수 :

egrep "\b$pattern\b" test 

\b는 단어 경계에 그렙 일치한다.

당신은 내 동정심을 csh로 프로그래밍합니다. 여기에 약간의 음식 생각이 있습니다 : Csh Programming Considered Harmful.

+0

Martin 감사합니다. 이것은 내 교과 과제의 일부이며 불행하게도 C 쉘을 사용해야합니다. Csh 프로그래밍에 관해서는 유해하다고 생각했지만 이미 읽었습니다. :) – Mike55