如何使用 grep 匹配部分出现的搜索字符串

how to use grep to match partial occurrence of searched string

我的文本文件:

vol0 0.9 vol2 1.2 vol3 3 vol1_1 1.4 voll_2 5
vol1 1 vol2 1.2 vol3 3 vol1_1 1.4 voll_2 5
vol2 1.3 vol2 1.8 vol3 3.2 vol1_1 1.2 voll_2 4.8
....

如何使用 vol1 grep 行,即只有第二行。从我所做的来看,它正在占用所有三行。

我假设您只想将“vol1”匹配为一个不同的词,而不是“vol1_1”,

对于 grep,使用 -w 标志(并且由于您不是在搜索正则表达式,因此添加 -F

grep -Fw vol1 filename

使用 Tcl,regular expressions 可以包含 \y zero-width 匹配单词开头或结尾的约束:

set fh [open $filename r]
while {[gets $fh line] != -1} {
    if {[regexp {\yvol1\y} $line]} {
        puts $line
    }
}
close $fh