当前位置: 技术问答>linux和unix
sed 正则问题
来源: 互联网 发布时间:2016-10-03
本文导语: echo abc | sed 's/b*/1' 这个输出是1abc 为什么呢,太奇怪了,abc前面没字符了呀?用 ^ 输出也是a 大家知道嘛 | b* 表示b出现0次或者多次 出现0次是什么意思 理解一下? 你刚才都说了"abc前面没字符了...
echo abc | sed 's/b*/1'
这个输出是1abc
为什么呢,太奇怪了,abc前面没字符了呀?用 ^ 输出也是a
大家知道嘛
这个输出是1abc
为什么呢,太奇怪了,abc前面没字符了呀?用 ^ 输出也是a
大家知道嘛
|
b* 表示b出现0次或者多次 出现0次是什么意思 理解一下?
你刚才都说了"abc前面没字符了呀" 那b出现0次也就是没有字符。
所以一开始匹配就匹配上了 就把abc里第一次b出现0次的地方替换成了1 就变成了1abc了
我觉得你要的效果应该是echo "abc"| sed 's/b.*/1/'
|
你在仔细读一下我5楼说的
你匹配到的是"没有" 又不是"a" 干嘛会把替换"a"变成1呢?
abc字符串 a字符前面是不是什么也没有? 你匹配到的是a前面的没有 把没有替换成了1 所以就变成了1abc
|
汉语没学好 "没有是什么意思"。
abc 这个字符串第一个有的字符是a 那a前面是什么? 是不是是"没有"? 替换的是a前面的没有!
a是存在的 干嘛要替换?
看看10楼我说的 老师叫你站个没人的地方 明明a的地方有人 你还偏偏要把a这个人推开 你站在那儿吗?
|
echo abc | sed 's/b*/1'
这个能输出? 直接报错。
这个能输出? 直接报错。
|
用.*通配任意字符。。
>echo abc | sed 's/b.*/1/'
a1
>echo abc | sed 's/b.*/1/'
a1
|
echo "abc"| sed 's/b.*/1/'
这样应该对的吧
*表示b重复任意多次,是0次也算进去了吧
这样应该对的吧
*表示b重复任意多次,是0次也算进去了吧
|
打了个长的 才发现已经2个回复了!
|
不是符号的事情。。。汗,主席说得对!
|
就像abc三个学生站队 a是排头 刚好又来了学生1 老师让1找个没人的地方站 1看到a的前面没人 于是就站过去了 1就变成排头了 是不是变成1abc了?
|
echo ""| sed 's/b*/1/'
echo ""| sed 's/c*/1/'
echo ""| sed 's/d*/1/'
结果都是1
echo ""| sed 's/c*/1/'
echo ""| sed 's/d*/1/'
结果都是1
|
你不能挤进去啊 和你把a推走是2个含义吧。
这个我知道“”本身开头就是没有
但是"abc"开头是a啊
-----------
这是你刚才说的
那"abc"是不是相当于"""abc"
|
[root@localhost ~]# echo "d"| sed 's/d*/1/g'
1
我的例子可以否定:前面什么都没有开始的话!
因为这个结果要是11才能成立
1
我的例子可以否定:前面什么都没有开始的话!
因为这个结果要是11才能成立
|
d* 表示出现0次或者多次。出现0次表示没有d 出现1次就是1个d 出现n次就是n个d
那你就等着高手给你解释。
|
b*表示莫须有,有的话就是它了
echo "abc"| sed 's/b*/1/g'
echo "abc"| sed 's/b*/1/g'
|
我没怒啊 我只是没法继续解释了 因为我对每个命令理解也不是100%准确细致的 而且大多数命令我都还不会用呢
|
你可以下载sed源代码 自己去分析他实现的细节
|
d* 表示出现0次或者多次。出现0次表示没有d 出现1次就是1个d 出现n次就是n个d
|
lz慢慢想
|
0不就是没有啊,哎,别钻牛角尖啊