dtdh.net
当前位置:首页 >> sED 正则匹配 >>

sED 正则匹配

现在有如下一串字符串: "asdfkjasldjkf"shiner"df 需求: 需要提取出shiner子字符串。 命令如下: [root@localhost /]$ echo "asdfkjasldjkf\"shiner\"df" | sed 's/\(.*\)"\(.*\)"\(.*\)/\2/g' shiner 命令解释 s: 表示替换命令 \(.*\)" : 表...

sed默认使用的是古老的基本正则表达式(BRE) 's/(.*):(.*)/\2:\1/' 上面这样不加反斜杠转义才是你理解的那种形式,匹配在括号里的字符 's/\(.*\):\(.*\)/\2:\1/' 圆括号前加上反斜杠转义,才是我们理解的分组,与现在大多数语言使用的含义相反...

不能。语法错误。 sed的语法是 s/exp1/exp2/ exp1和exp2不能用\d,\w,\?之类的形式,\w要用[a-zA-Z], \d要用[0-9]来替代。

a=$( expr 'helloworld20140501.txt' : '.*\([0-9]\{8\}\).*' ) echo $a linux shell 中可以将命令的结果赋值给变量,$(命令)这种格式将返回命令执行后的结果字符串 上面命令执行后,变量a的值是20140501 a=`echo 'helloworld20140501.txt'|sed ...

向前向后的说法到底啥意思,举个例子,正则表达式可以解决一切 .*xxx.* 一个是前一个是后

sed 是最基本的正则表达式,在这种表达式里,除了 . 和 * 以外,其它所有的特殊字符都必须转义,否则当作字面字符看待。 所以 + 是匹配它本身,\+ 才是作为量词修饰。 这种风格的表达式很多见,比如常用的编辑器 vi 就是这个风格。

例如字符串是12345old67890old 那么上面语句分解如下: s/ 是启用替换 替换内容如下: \(.*\) 对应12345 并标记为\1 old 对应old \(.*old\) 对应67890old 并标记为\2 替换内容如上: 那么替换后的格式如下: /\1new\2 对应 12345new67890old

中括号表示字符集,在中括号开头的^表示否定 [^/] 表示除了'/'字符以外的所有字符 在第一二个@中间的是用于匹配的正则 ^/.*/([^/]+)/? (^/]+)匹配字符串中最后一对 /..../(最后的'/'可有可无)中间的内容,在替换中用\1表示

root@ubuntu:~# cat b$cfg['blowfish_secret'] = ''asdbjbaksdbaed2324g3groot@ubuntu:~# cat b|sed -n "s/\(.*\)23.*/\1/p"aed

-n取消默认输出 -p 打印 -d删除 -e允许多项编辑 sed取行,要特别注意sed -n 's###g' filename 的使用,sed的\( \)的功能可以记住正则表达式的一部分,其中,\1为第一个记住的模式即第一个小括号中的匹配内容,\2第二记住的模式,即第二个小括号...

网站首页 | 网站地图
All rights reserved Powered by www.dtdh.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com