如果我们使用grep
命令,'\<string\>'
结果将是绝对的。例如:
文件1:
test
test2
1test
如果我们使用,cat File1 | grep test
输出将是:
test
test2
1test
但如果我们只想获得第一行,就必须grep '\<test\>'
。
问题来了:如何在脚本中将这些字符与变量一起使用?例如:
cat file1 | grep '/<$1/>'
但这个命令不起作用。
答案1
单引号不允许变量扩展。因此,'$1'
将是文字$1
。相反,您需要双引号。请参阅此 wiki 条目了解更多引文。
$ foo=test
$ grep "\<$foo\>" file1
test
请注意,<\
和\>
也可以用单词边界替换:
$ grep "\b$foo\b" file1
test
您也不需要cat
文件grep
– 它可以自行读取文件。
答案2
您正在寻找-w
匹配的单词:
$ grep -w 'test' File1
test
如果你有变量中的信息,只需正常使用双引号即可slhck 已经解释过了:
$ var="test"
$ grep -w "$var" File1
test
从man grep
:
-w
--word-regexp仅选择包含组成整个单词的匹配项的行。测试是匹配的子字符串必须位于行首,或者前面是非单词组成字符。同样,它必须位于行尾,或者后面是非单词组成字符。单词组成字符包括字母、数字和下划线。如果还指定了 -x,则此选项无效。