初学sed正则表达式,请懂的人解释下
来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/06/12 18:41:20
初学sed正则表达式,请懂的人解释下
s/\(.*\).*:\(.*\)/\2:\1/'
功能是把冒号左右内容对换
但我理解的是,匹配的内容,应该先是一个括号(),括号里可以有0-n个字符,接着是0-n字符,接着是冒号,再是一个括号()里面有0-n个字符的,匹配这样的字符串,把冒号左右的对掉.
pattern里明明有\( \),这样的括号,为什么没有括号包起来的字符串也会被匹配到?
s/\(.*\).*:\(.*\)/\2:\1/'
功能是把冒号左右内容对换
但我理解的是,匹配的内容,应该先是一个括号(),括号里可以有0-n个字符,接着是0-n字符,接着是冒号,再是一个括号()里面有0-n个字符的,匹配这样的字符串,把冒号左右的对掉.
pattern里明明有\( \),这样的括号,为什么没有括号包起来的字符串也会被匹配到?
sed默认使用的是古老的基本正则表达式(BRE)
's/(.*):(.*)/\2:\1/'
上面这样不加反斜杠转义才是你理解的那种形式,匹配在括号里的字符
's/\(.*\):\(.*\)/\2:\1/'
圆括号前加上反斜杠转义,才是我们理解的分组,与现在大多数语言使用的含义相反.
如果不习惯,可以使用-r参数,使用扩展正则表达式
sed -r 's/(.*):(.*)/\2:\1/'
sed -r 's/\(.*\):\(.*\)/\2:\1/'
这样就与你的理解一致了
再问: 我网上搜了,知道\( \)原来代表分组
那这个pattern里面,冒号之前的那个.*是没有用的吧
's/(.*):(.*)/\2:\1/'
上面这样不加反斜杠转义才是你理解的那种形式,匹配在括号里的字符
's/\(.*\):\(.*\)/\2:\1/'
圆括号前加上反斜杠转义,才是我们理解的分组,与现在大多数语言使用的含义相反.
如果不习惯,可以使用-r参数,使用扩展正则表达式
sed -r 's/(.*):(.*)/\2:\1/'
sed -r 's/\(.*\):\(.*\)/\2:\1/'
这样就与你的理解一致了
再问: 我网上搜了,知道\( \)原来代表分组
那这个pattern里面,冒号之前的那个.*是没有用的吧
初学sed正则表达式,请懂的人解释下
关于shell的sed正则表达式用法问题
帮解释下正则表达式,看不懂啊.
求解释这个正则表达式的意思?
sed正则表达式sed -e 's/:\+\s\+/:/' -e 's/ /_/g' -e '/^$/d' -e 's/
这个正则表达式怎么解释
linux 下,在“一、二……”数字,前面加上“第”后面加上“章”,sed命令怎么弄啊.正则表达式.
谁能详细的帮我解释下正则表达式中判断是否是ip的这个例子
i)]*> 请高手解释一下这个正则表达式的含义~
正则表达式cat /etc/passwd | sed -r 's/\b([a-zA-Z])/\u\1\u/g‘
正则表达式 echo $1 > 1.tmp sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\
请帮我解释下这个正则问题