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