themanwhoknowstheman
themanwhoknowstheman

Reputation: 180

Using string match to search a file

Want to search within a file using tcl to find a match.

Here is what I have.

set search "random string"
set file [open "file.txt" r]
 while {![eof $file]} {
    gets $file data
    if {[ string match [string toupper $search] [string toupper $data] ] } {
    //works
    } else {
    //doesnt work
    }
 }

File.txt

chicken.dinner:1439143130
random.strings:1439143130
more random strings:1439413390
random.strings.that.contain-special.characters:1439441566

Not able to match "random string" with what's in the file. Appreciate any help.

Upvotes: 0

Views: 2610

Answers (1)

Dinesh
Dinesh

Reputation: 16428

If you want to use only string match, then use the glob pattern * here.

set search "random string"
set file [open "file.txt" r]
 while {[gets $file data] != -1} {
    if {[string match *[string toupper $search]* [string toupper $data]] } {
        puts "Found '$search' in the line '$data'"
    } else {
        # does not match case here 
    }
 }

Output :

Found 'random string' in the line 'more random strings:1439413390'

Since we want to know whether the line contains the search string, we have added * at the beginning as well as in the end. It can match any number of sequence.

Reference : string match

Upvotes: 1

Related Questions