免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5533 | 回复: 9
打印 上一主题 下一主题

[文本处理] sed命令的 s命令,通常是‘s/ /’格式的,下面这个是's, , '逗号,这又是什么意思? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-27 10:43 |只看该作者 |倒序浏览
今早阅读一个脚本,里面有sed命令,
sed -e 's,\(QPEDIR=\).*,\1'$QPEDIR',' \
    -e 's,\(QTOPIA_DEPOT_PATH=\).*,\1'$QTOPIA_DEPOT_PATH',' \
    -e 's,\(QTEDIR=\).*,\1'$QTEDIR',' \
    -e 's,\(QT2DIR=\).*,\1'$QT2DIR',' \
    -e 's,\(DQTDIR=\).*,\1'$DQTDIR',' Makefile.in >Makefile

通常sed的s命令,都是如下的格式
qpe_platform="$(echo "$QPE_CFG" | sed 's/.*-platform[=[:space:]"'"'"']*\([^[:space:]"'"'"']*\).*/\1/')"
经常是's/..../..../',可是上面那个,是's,....,......,',由于没有见过,所以不知道这是什么用法?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2014-08-27 10:52 |只看该作者
本帖最后由 jason680 于 2014-08-27 10:53 编辑

回复 1# little_tony


s/old/new/   

it can be changed
s|old|new|
s,old,new,
s.old.new.
...

论坛徽章:
39
双子座
日期:2014-08-06 17:37:19极客徽章
日期:2016-12-07 14:03:402017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之新疆
日期:2017-03-24 16:36:1915-16赛季CBA联赛之江苏
日期:2017-04-26 17:19:08黑曼巴
日期:2018-03-07 18:56:5615-16赛季CBA联赛之八一
日期:2018-03-09 10:44:1015-16赛季CBA联赛之江苏
日期:2018-03-12 15:12:1915-16赛季CBA联赛之青岛
日期:2018-03-16 09:13:0515-16赛季CBA联赛之山东
日期:2018-04-27 18:23:0515-16赛季CBA联赛之新疆
日期:2018-05-04 11:29:30
3 [报告]
发表于 2014-08-27 10:59 |只看该作者
用任意符号都可以替换/

论坛徽章:
39
双子座
日期:2014-08-06 17:37:19极客徽章
日期:2016-12-07 14:03:402017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之新疆
日期:2017-03-24 16:36:1915-16赛季CBA联赛之江苏
日期:2017-04-26 17:19:08黑曼巴
日期:2018-03-07 18:56:5615-16赛季CBA联赛之八一
日期:2018-03-09 10:44:1015-16赛季CBA联赛之江苏
日期:2018-03-12 15:12:1915-16赛季CBA联赛之青岛
日期:2018-03-16 09:13:0515-16赛季CBA联赛之山东
日期:2018-04-27 18:23:0515-16赛季CBA联赛之新疆
日期:2018-05-04 11:29:30
4 [报告]
发表于 2014-08-27 11:10 |只看该作者
info sed 里面有解释(这曾经是群里面一位大婶找出来的)

QQ图片20140827110728.jpg (23.43 KB, 下载次数: 52)

QQ图片20140827110728.jpg

论坛徽章:
0
5 [报告]
发表于 2014-08-27 11:10 |只看该作者
jason680 发表于 2014-08-27 10:52
回复 1# little_tony


谢谢, 同时能否解释一下sed -e 's,\(QPEDIR=\).*,\1'$QPEDIR','里面的'$QPEDIR'的单引号的作用呢?在线等,谢谢

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [报告]
发表于 2014-08-27 11:20 |只看该作者
回复 5# little_tony

基本上,它不在里面,而是在外面(shell才能做变数替换)

's,\(QPEDIR=\).*,\1'$QPEDIR','
   

论坛徽章:
0
7 [报告]
发表于 2014-08-27 11:27 |只看该作者
jason680 发表于 2014-08-27 11:20
回复 5# little_tony

基本上,它不在里面,而是在外面(shell才能做变数替换) ...



能说祥细点不?我刚基础,觉得有点绕

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
8 [报告]
发表于 2014-08-27 11:33 |只看该作者
回复 7# little_tony

(单/双)引号是配对使用....

你认为
's,\(QPEDIR=\).*,\1'$QPEDIR','

实际为
's,\(QPEDIR=\).*,\1'$QPEDIR','
   

论坛徽章:
0
9 [报告]
发表于 2014-08-27 11:38 |只看该作者
本帖最后由 little_tony 于 2014-08-27 11:41 编辑
jason680 发表于 2014-08-27 11:33
回复 7# little_tony

(单/双)引号是配对使用....


好像有点道理,可是sed不是以单引号为命令行的起始的吗?
那么,如是按照配对:

sed -e 's,\(QPEDIR=\).*,\1'$QPEDIR','
   
那么,sed -e 的命令我理解成了:'s,\(QPEDIR=\).*,\1',这又不知怎么解释了后面那部分$QPEDIR','有何用意?谢谢

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
10 [报告]
发表于 2014-08-27 11:42 |只看该作者
本帖最后由 jason680 于 2014-08-27 11:50 编辑

回复 9# little_tony

>>好像有点道理,可是sed不是以单引号为命令行的起始的吗?

无此规定或规则...

程序是 依照写出来(的code),跑出结果 不是依照你想出来的,得到结果

$ echo 123 | sed s.2.x.
1x3

$ echo 123 | sed 's.2.x.'
1x3

$ echo 123 | sed "s.2.x."
1x3


please study basic skill. ex:

shell基础二十篇
http://bbs.chinaunix.net/forum.p ... 42&fromuid=24785593

shell 十三問?
http://bbs.chinaunix.net/forum.p ... 53&fromuid=24785593

...
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP