2016-08-30 3 views
1

을 제공하는 반면, "그렙 아무것도 반복하는 방법"을 참조하십시오. 그러나 TCL 8.4에서 동일한 작업을 시도 할 때 어떤 일이 발생하는지 확인하십시오.Tcl의 간부 : 정상 LINUX 내가 cshell를 사용하여 명령을 실행할 때 발생하는 것입니다 여기에 정답

exec find /projects/corpeng/members/ldagan/adm/utils/Synopsys/CCK/shared_tcl_code -name "*.tcl" | grep -v regression | xargs grep -Plc "^[ ]*namespace[ ]+eval[ ]+DlgViolationKeepProcs " 
> grep: nothing to repeat 

이유는 무엇입니까? 어떤 아이디어?
감사합니다.

답변

2

큰 따옴표로 묶인 [ ... ]은 Tcl 명령 대체로 처리됩니다. 특히 [ ]이 빈 문자열 (예 : 삭제됨)으로 대체됩니다. 가장 간단한 해결 방법은 { 중괄호 }에 grep 용어를 사용하여 대체를 금지하는 것입니다. 그러나 [ 앞에 백 슬래시 (\)를 넣어도 작동합니다. 당신이 말한 것 경우도 일하는 것이

# Where to search from; often a nice thing to separate out 
set basedir /projects/corpeng/members/ldagan/adm/utils/Synopsys/CCK/shared_tcl_code 

# What to look for; note the braces! 
set term {^[ ]*namespace[ ]+eval[ ]+DlgViolationKeepProcs } 

exec find $basedir -name "*.tcl" | grep -v "regression" | xargs grep -Plc $term 

:

의 몇 가지 전략적 변수를 사용하여도 읽을 수 있도록 코드를 좀 더 쉽게 만들어 보자

set term "^\[ ]*namespace\[ ]+eval\[ ]+DlgViolationKeepProcs " 

을하지만 경험은 시도 나에게 말한다 필요 이상으로 백 슬래시를 사용하지 마십시오. 그들은 장기간에 더 혼란 스럽습니다.

+0

Tcl 남자들과 여자들은 너와 함께 무엇을 할까? – user1134991