2014-05-01 74 views
0

我想用grep打印仅以特定模式开始的行。这里是一个例子用grep -e匹配特定的字

$SERVER_IP = 2.2.2.2 
$SERVER_IP_PORT = 1111 
$SERVER_IP_XXX = blablabla 

我希望grep只打印SERVER_IP = 2.2.2.2而不是其他三行。

我想下面的命令,但没有奏效

grep -e "^\s*\$SERVER_IP$" 

如果我尝试:

grep -e "^\s*\$SERVER_IP" 

grep的将打印所有三行

我怎样才能做到这一点用grep - e或egrep?谢谢

回答

1
grep -e "^\s*\$SERVER_IP\>" 

\>表示“字边界”或“地方单词字符满足非单词字符。”

+0

这样做。非常感谢。 sed和其他使用reg exp的工具中的单词boundery是否一样?我认为这是$ – JohnnyLoo

+0

'$'的意思是“行尾”。在所有POSIX正则表达式中都存在字边界表达式。在PCRE中,他们使用'\ b'代替。 – heptadecagram

+0

那么为什么这个表达式“^ \ s * \ $ DB \ ['TYPE'\] \>”不能打印$ DB ['TYPE']?有任何想法吗? – JohnnyLoo

0

使用grep -e '^ \ $ SERVER_IP =',匹配以开头的行$ SERVER_IP =

0

如果你有awk,你可以这样做:

awk '$1=="$SERVER_IP"' file 
$SERVER_IP = 2.2.2.2 

==使得它匹配只有场1是确切$SERVER_IP