免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求解:sed中的‘ \ /各代表什么意思? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-18 17:41 |只看该作者 |倒序浏览
sed -i '/'$wallpaper_name'/d' $launcher_wallpaper_xml
sed -i '/'$wallpaper_find_line'/a\'$wallpaper_add_line $launcher_wallpaper_xml

-i 代表直接修改读取的文件内容,而不是由屏幕输出
d 删除

我不懂的是:

1. sed -i '/'$wallpaper_name'/d' $launcher_wallpaper_xml中的 /'$wallpaper_name'/  中的 /' 和 '/ 各代表什么?

2. sed -i '/'$wallpaper_find_line'/a\'$wallpaper_add_line $launcher_wallpaper_xml中的/'$wallpaper_find_line'/a\'$wallpaper_add_line中的/' '/  \'又是什么意思?

感谢各位的支持

论坛徽章:
1
申猴
日期:2013-10-18 10:42:24
2 [报告]
发表于 2013-10-18 17:46 |只看该作者
回复 1# 翱翔飞军


    你刚学sed吧~
看看这篇文章吧~
  1. http://coolshell.cn/articles/9104.html
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
3 [报告]
发表于 2013-10-18 17:46 |只看该作者
[root@ tmp]# sed '/'$wallpaper_name'/d' urfile
sed: -e expression #1, char 0: no previous regular expression

我这里报错了,你是不是抄错代码了?

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
4 [报告]
发表于 2013-10-18 17:49 |只看该作者
sed -i '/'$wallpaper_name'/d'
其实就是想要表达
sed -i '/$wallpaper_name/d'
就是删除文件里匹配$wallpaper_name这个变量的行,但是以为sed用到的是单引号,变量在单引号里失去了作用,so在变量的两端各增加一个单引号来解决这个问题。so你应该这么看
'$wallpaper_name'
而不是这么看
/' '/

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
5 [报告]
发表于 2013-10-18 17:50 |只看该作者
看明白了,作者的意图是这样的:
[root@ tmp]# cat urfile
aaa
bbb
ccc
[root@ tmp]# wallpaper_name=bbb
[root@ tmp]# sed '/'$wallpaper_name'/d' urfile
aaa
ccc

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
6 [报告]
发表于 2013-10-18 17:53 |只看该作者
本帖最后由 Shell_HAT 于 2013-10-18 17:54 编辑

作者是要把包含$wallpaper_name这个变量内容的行删掉
sed '/$wallpaper_name/d' urfile 这样做的话,单引号里面不会进行变量替换,所以得不到正确的结果。
sed '/'$wallpaper_name'/d' urfile 单引号是挨着最近的两个配对
另外一个写法是这样:
sed "/$wallpaper_name/d" urfile

论坛徽章:
0
7 [报告]
发表于 2013-10-18 18:00 |只看该作者
本帖最后由 翱翔飞军 于 2013-10-18 18:06 编辑

非常感谢各位的帮助,但是,我有点笨,这点还是没有懂:

2. sed -i '/'$wallpaper_find_line'/a\'$wallpaper_add_line $launcher_wallpaper_xml中的a\'$wallpaper_add_line 中的 \是什么意思?
抱歉是这个

论坛徽章:
0
8
发表于 2013-10-18 18:01
回复 2# wangyishuai


    谢啦

论坛徽章:
0
9 [报告]
发表于 2013-10-18 18:02 |只看该作者
回复 4# dn833


    非常感谢

论坛徽章:
0
10 [报告]
发表于 2013-10-18 18:03 |只看该作者
回复 6# Shell_HAT
呵呵 上次我的提问 你也帮助了我一个忙  再次感谢

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP