无法正确grep文件

时间:2014-04-24 09:39:10

标签: shell grep

我有一个语法非常简单的文件:

cat /tmp/test

ARCH=""prtconf -b | awk '/^name:/ {print $2}'

我试图grep它:

cat /tmp/test | grep "prtconf -b | awk '/^name:/ {print $2"

ARCH=""prtconf -b | awk '/^name:/ {print $2}'

让grep字符串更长一点,添加}到最后:

cat /tmp/test | grep "prtconf -b | awk '/^name:/ {print $2"}

找不到任何东西

为什么当我添加}到行尾时grep停止工作?

操作系统是Solaris 10U11

1 个答案:

答案 0 :(得分:1)

$2指的是命令行参数,所以在这里它将替换模式中的空白字符。所以你需要像$

那样用斜杠来逃避\$
cat /tmp/test | grep "prtconf -b | awk '/^name:/ {print \$2}"

在你的模式中没有添加}它是有效的,因为它将实际模式与prtconf -b | awk '/^name:/ {print匹配为您的输入。但是如果你在模式中添加},那么它会尝试匹配prtconf -b | awk '/^name:/ {print }(文件中没有,因此它不会显示输出。)