shell (e)grep正则表达式问题
要检查的是字符串$2是否为文本文件的一行,意思即^$2$,但是加单引号的话$2变成了$2两个字符本身,加双引号句首句末又变成了符号。还要注意$2里面可能有空格。。。求写法...
要检查的是字符串$2是否为文本文件的一行,意思即^$2$,但是加单引号的话$2变成了$2两个字符本身,加双引号句首句末又变成了符号。还要注意$2里面可能有空格。。。求写法。
展开
2个回答
展开全部
楼主且看我实验
[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单独为一行的输出
[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单独为一行的输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单引号和双引号可以连在一起用:
>a=2
>echo '$a='"$a"
$a=2
你要注意$2的内容会被作为正则表达式解释,他不能含有正则表达式元字符。
grep -P '^\s+'"$2"'$' file
>a=2
>echo '$a='"$a"
$a=2
你要注意$2的内容会被作为正则表达式解释,他不能含有正则表达式元字符。
grep -P '^\s+'"$2"'$' file
追问
-P 就是能用\s+的意思么?
一般的说grep和egrep就差这个-P?
追答
不是啊,你到网上一搜就知道了。-P 表示使用perl 正则语法。对应的还有 -E -G.egrep grep 是两个不同的程序。都用来匹配文件但是选项不同。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询