Chinaunix

标题: sed数据处理还是没搞懂=。= [打印本页]

作者: zjmcu    时间: 2017-11-08 16:25
标题: sed数据处理还是没搞懂=。=
sed -r 's#([^/]*)//.*#\1#'

这个是什么意思啊。


作者: Riet    时间: 2017-11-09 14:19
只保留不含/的字符串
作者: zjmcu    时间: 2017-11-14 12:52
回复 2# Riet

能和我详细说明一下吗?谢谢
作者: cao627    时间: 2017-11-14 22:29
sed -r 's#([^/]*)//.*#\1#'
#号是分隔符号  前面两个#号之间是正则表达。后面两个##之间表示前面正则匹配的内容替换为什么
\1 表示前面 带()的正则匹配的内容,即  ([^/]*)   匹配的内容
([^/]*)   括号里的正则表示匹配任意多个 非/ 字符  带上 ()表示  捕获  捕获的内容可以被引用 如上面的\1就是表示对第一个捕获的引用。
([^/]*)//.* 表示匹配任意非/字符开头然后接两  // 再接任意字符     如字符窜  aaa//bbb    会被匹配

如果对正则不懂 就去找资料看一下
这里新手多数迷惑的地方大概是#号
sed 命令中第一s命令后面的跟的字符自动成为分隔符号 这里s后跟的是#号,所以#就成了分隔符号






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2