XYZ-123 유형 패턴을 얻기 위해 tcl에서 grep을 수행하는 방법

XYZ-123 유형 패턴을 얻기 위해 tcl에서 grep을 수행하는 방법

TCL에서 이 grep 명령을 실행하는 방법은 무엇입니까?

grep '[A-Z][A-Z][A-Z]\-[0-9][0-9][0-9]' file1 > file2

답변1

티클작은따옴표 대신 중괄호를 따옴표로 사용하세요. 이것은 작동합니다:

grep {[A-Z][A-Z][A-Z]-[0-9][0-9][0-9]} file1 > file2

하지만 일치하는 항목이 없으면 나타납니다.아직오류를 보고하세요. 예를 들면 다음과 같습니다.

child process exited abnormally
    while executing
"exec grep {[A-Z][A-Z][A-Z]-[0-9][0-9][0-9]} file1 > file2"
    (file "./foo" line 4)

~을 위한저것, 이것Tcl 문서명령을 블록으로 묶어야 함을 나타냅니다 catch. 예:

set status 0
if {[catch {exec grep {[A-Z][A-Z][A-Z]-[0-9][0-9][0-9]} file1 > file2} results options]} {
    set details [dict get $options -errorcode]
    if {[lindex $details 0] eq "CHILDSTATUS"} {
        set status [lindex $details 2]
    } else {
        puts "unexpected error $options $results"
        set status 99
    }
}

추가 자료:

  • tcl - 중괄호 사용법 이해
    답변 중 하나는 중괄호가 셸의 작은 따옴표와 유사하고 큰 따옴표가 셸의 큰 따옴표와 유사하다고 말했지만 후자의 역할을 명확하게 설명하지 않았습니다.이내에 티클그리고 큰따옴표를 사용하면 invalid command name "A-Z"오류가 발생합니다.

답변2

그냥 사용해 보셨나요 exec?

즉:

exec grep "[A-Z][A-Z][A-Z]\-[0-9][0-9][0-9]" file1 > file2

관련 정보