0

我有一个文件(测试),内容如下:

win2k31       8506 KB   D:\Program Files (x86)
win2k31       6256 KB   D:\98fdac7656d6632b28
win2k31       3110 KB   C:\Program Files\Microsoft
win2k31         14 KB   C:\Program Files\Zero G Registry

我必须使用 grep 在其中运行模式搜索,但它似乎不起作用。例如:

#grep 'C:\\Program Files\\Microsoft' test
win2k31       3110 KB   C:\Program Files\Microsoft

'grep' 进行了很好的搜索,但如果我将模式放在变量 {$var} 中,它会失败或搜索不正确

#var='C:\\Program Files\\Microsoft'
#echo $var
C:\\Program Files\\Microsoft
#grep $var test
grep: Files\\Microsoft: No such file or directory
test:win2k31       3110 KB   C:\Program Files\Microsoft
test:win2k31         14 KB   C:\Program Files\Zero G Registry

上面显示“grep”只搜索了“C:\Program”,并显示了“Files\Microsoft”部分的错误,因为它有空间。然后,如果我加上额外的引号 ('),它会再次失败。

#var=\''C:\\Program Files\\Microsoft'\'
#echo $var
'C:\\Program Files\\Microsoft'
#grep $var test
grep: Files\\Microsoft': No such file or directory

我在这里想念什么?为什么将模式放在对 grep 不起作用的变量中?

4

1 回答 1

1

尝试用双引号括起来grep搜索模式$var"

var='C:\\Program Files\\Microsoft'
grep "$var" test

输出:

win2k31       3110 KB   C:\Program Files\Microsoft

最好将grep/sed搜索模式用

  1. '在没有变量替换的情况下使用单引号
  2. "在需要变量替换的情况下使用双引号
于 2013-11-02T07:51:27.707 回答