如果短划线在字符串中" grep -w"不是唯一的。我该如何解决这个问题?
示例:
File1中:
football01
football01test
# grep -iw ^football01
football01
文件2:
football01
football01-test
# grep -iw ^football01
football01
football01-test
答案 0 :(得分:3)
这是预期的和记录在案的行为:
-w, --word-regexp
Select only those lines containing matches that form whole words. The test is that the
matching substring must either be at the beginning of the line, or preceded by a non-word
constituent character. Similarly, it must be either at the end of the line or followed
by a non-word constituent character. Word-constituent characters are letters, digits,
and the underscore.
如果添加短划线,它会终止您的第一个单词,因为短划线是“非单词构成字符”。如果你把这些单词写在一起,那么word-regexp grep会将它视为一个单词并且不匹配它。
你想要做什么?
如果你只想知道你的线是否是football01而没有别的,你可以这样做
grep -i "^football01$"
如果你想获得别的东西,请你解释一下它是什么。
答案 1 :(得分:1)
-w
开关用于单词regex。在file1中,football01test是一个单词,在file2中,football01和test是用连字符分隔的两个单词。
man grep对-w
仅选择包含整体匹配的行 话。测试是匹配的子字符串必须在 该行的开头,或前面是非单词成分 字符。同样,它必须要么在结束时 行或后跟非单词构成字符。 单词构成字符是字母,数字和下划线。
由于football01
与football01test
不匹配,因此您无法从grep获取该信息。
如果你要做grep -i ^football01 file1.txt
,你会得到两行。