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

如何使用grep匹配搜索字符串的部分匹配,grep,tcl,Grep,Tcl,我的文本文件: 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 .... 如何使用第1卷grep行,即仅第2行。从我现在所做的来看,这是所有三行。我假设您只想将“vol1”作为一个不同的单词匹配,而不是“vol1_1” 使用grep时,使用-w标志(由于您没有搜索正则表达

我的文本文件:

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
....

如何使用第1卷grep行,即仅第2行。从我现在所做的来看,这是所有三行。

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

使用grep时,使用
-w
标志(由于您没有搜索正则表达式,请添加
-F

grep-Fw vol1文件名
使用Tcl,可以包括在单词开头或结尾匹配的
\y
零宽度约束:

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

你在做什么?你在使用grep还是tcl?实际上我在tcl内部使用grep。因为这个问题现在已经解决了,但我还有一个关于grep的问题。我可以用每行的特定索引号搜索grep吗,即在每行中,只查找第三个元素,如果模式匹配,则grep该行。。如果是,请让我知道。另外,
string first
可用于查找文字子字符串;那可能更快。(实际上是吗?
time
it to find!)如何使用
string first
来避免匹配第一行?