shell (e)grep正则表达式问题

要检查的是字符串$2是否为文本文件的一行,意思即^$2$,但是加单引号的话$2变成了$2两个字符本身,加双引号句首句末又变成了符号。还要注意$2里面可能有空格。。。求写法... 要检查的是字符串$2是否为文本文件的一行,意思即^$2$,但是加单引号的话$2变成了$2两个字符本身,加双引号句首句末又变成了符号。还要注意$2里面可能有空格。。。求写法。 展开
 我来答
防毒面罩
2012-11-11 · TA获得超过432个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:165万
展开全部
楼主且看我实验

[root@master ~]# cat -A temp
$ 2$
$ 2$
$2 $
$2$
$2 aaa$
$^I2$
[root@master ~]# grep -n ^\$2$ temp
4:$2
-----------------------
说明:
cat -A 显示文件的所有控制字符,在每行结束处显示"$",将跳格字符(Tab键)显示为^I, 给你详解一下我每一行的字符如下,
第一行:空格$空格2
第二行:$空格2
第三行:$2空格
第四行:$2
第五行:$2空格空格aaa
第六行:$Tab键2
然后grep -n 打印输出行的行数. ^\$2$, "\" ,去掉$的元字符额特殊解释. 然后^匹配开始,$匹配技结束,就得到第四行则是你想要的字符串$2单独为一行的输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不知详解
2012-11-11 · 知道合伙人软件行家
不知详解
知道合伙人软件行家
采纳数:609 获赞数:2252
自学计算机。

向TA提问 私信TA
展开全部
单引号和双引号可以连在一起用:
>a=2
>echo '$a='"$a"
$a=2
你要注意$2的内容会被作为正则表达式解释,他不能含有正则表达式元字符。
grep -P '^\s+'"$2"'$' file
追问
-P 就是能用\s+的意思么?
一般的说grep和egrep就差这个-P?
追答
不是啊,你到网上一搜就知道了。-P 表示使用perl 正则语法。对应的还有 -E  -G.egrep  grep 是两个不同的程序。都用来匹配文件但是选项不同。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式