Tcl File Utilities Code Snippet (文件操作代码片段)

@ 2009-07-19 15:10:41
标签:

    # 2008/11/29 23:59 @ Sean Zhang

    • [[http://wiki.tcl.tk/460|Example Scripts Everybody Should Have]]

    grep

    proc grep {pattern args} {
        foreach filename $args {
            set file [open $filename r]
            set lnum 0
            while {[gets $file line] >= 0} {
                incr lnum
                if {[regexp $pattern $line]} {
                    puts "${filename}:${lnum}:${line}"
                }
            }
            close $file
        }
           
    }
    
    #----
    package require tcllib
    set listOfMatches [fileutil::grep $_pattern $_fileList]
    
    

    find

        proc find {{basedir .} {filterScript {}}} {
            set oldwd [pwd]
            cd $basedir
            set cwd [pwd]
            set filenames [glob -nocomplain * .*]
            set files {}
            set filt [string length $filterScript]
            foreach filename $filenames {
                if {!$filt || [eval $filterScript [list $filename]]} {
                    lappend files [file join $cwd $filename]
                }
                if {[file isdirectory $filename]} {
                    set files [concat $files [find $filename $filterScript]]
                }
            }
            cd $oldwd
            return $files
        }
    
    #----
    package require tcllib
    set listOfFiles [fileutil::find $_basedir $_filterScript]
    #----
    find . {string match *.txt}
    

    sed

    ### s/regexp/replacement/g
      proc substGlobalFile {regexp replacement inputFile outputFile} {
          set fin [open $inputFile r]
          set fout [open $outputFile w]
          while {[gets $fin linein] >= 0} {
              regsub -all $regexp $linein $replacement lineout
              puts $fout $lineout
          }
          close $fin
          close $fout
      }
    
    标签:

      分享到:
      comments powered by Disqus

      27/31ms