使用 grep 命令获取绝对结果

使用 grep 命令获取绝对结果

如果我们使用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,则此选项无效。

相关内容