2016-06-30 5 views
0

끝에있는 {}을 얻으면 모든 줄 끝에 '\ n'을 표시하려고합니다. 올바르지 않은 단어 오류 받기

그래서 명령

set fp [open "test.tcl" r] 
set new_file [open "final.tcl" w+] 
while {![eof $fp]} { 
    get $fp line 
    if $line {$'{'} { 
    puts $new_file '\n' 
    } 
} 

하지만이 작동하지 때로는 오류 "잘못된 bareword는"을 제공을 썼다. 제발 나를 도울 수 있어요.

+0

당신은 아마 의미 명령은 엉망이며, 당신이 텍스트 행을 인쇄하지 않는 경우, GET 대신 가져옵니다. 또한 변경 사항이 나타나기 전에 파일을 플러시하거나 닫아야합니다. –

+0

코드가 각 행을 표현식으로 평가하려고합니다. 이것이 당신이 원하는 무엇인가라고는 생각되지 않습니다. –

답변

1

어떻게

set fp [open test.tcl] 
set new_file [open final.tcl w+] 
while {[gets $fp line] >= 0} { 
    if {[regexp {\{$} $line]} { 
     puts $new_file $line\n 
    } else { 
     puts $new_file $line 
    } 
} 
close $fp 
close $new_file 

어떻습니까?

문서 : close, gets, open, puts, Syntax of Tcl regular expressions, regexp, set, while

+0

작동. 고마워. 그리고 내가 '}'를 얻지 않으면 \ t을 앞으로 다가올 모든 줄에 넣고 싶으면 어떻게 될까? 다시 나를 도와 주길 바래. –

+0

@DhruvPaul : 죄송합니다, 아니요. Prettyprinting은보기보다 어렵고 상당히 실망 스러울 수 있습니다. 우선, 정규 표현식은 장기적으로 도움이되지 않을 것입니다 : 캐릭터별로 소스 코드를 살펴보고 다양한 종류의 브레이스 사용을 구별하는 방법을 찾아야합니다. prettyprinting 실험을 통해 많은 것을 배울 수 있습니다. 그러나 이것은 빙산의 극단적 인 팁일뿐입니다. 우리가 계속한다면이 답변은 긴 튜토리얼로 바뀔 것입니다. 나는 당신이 그 (것)들을 배치하는 경우에 더 질문에 응답 할지도 모르지만, 나는 그것을 통해 당신을 걸을 것이다. 다시 미안 해요. –

관련 문제