免费注册 查看新帖 |

Chinaunix

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

sed遇到什么符号要用转义、 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2008-06-29 12:01 |显示全部楼层
还有s命令后紧跟的分隔符要转换,其他的就不知道了"和'也不一定要转义的,比如:echo 'a"b'|sed 's/"/a/'和echo "a'b"|sed "s/'/a/"
有点郁闷的是,如果用[作为分隔符怎么办?

论坛徽章:
0
2 [报告]
发表于 2008-06-29 12:21 |显示全部楼层
用单引号还是双引号主要看你的习惯,我一般是用单引号的,单引号可以少一些转义。

论坛徽章:
0
3 [报告]
发表于 2008-06-29 12:45 |显示全部楼层
你用的是echo 'a"b'|sed 's/"/a/'?

论坛徽章:
0
4 [报告]
发表于 2008-06-29 13:10 |显示全部楼层
-i不是批处理,只是直接写入文件而已,你的sed是gnu sed?什么版本?
sed --version
GNU sed version 4.1.4

论坛徽章:
0
5 [报告]
发表于 2008-06-29 13:14 |显示全部楼层
支持-i参数的话应该是gnu sed啊。
你改成sed -i 's/\"/a/' a.txt试试。
还有,在没有确认命令是否成功的时候用sed 's/\"/a/' a.txt|less查看,确认成功再用-i,免得文件被破坏。脚本中尽量少用-i,内存的读取比硬盘快很多。

论坛徽章:
0
6 [报告]
发表于 2008-06-29 13:25 |显示全部楼层
我是cygwin:
bash-3.2$ cat a
a'b
a'b
a'b
a'b
a'b
bash-3.2$ sed -i 's/"/a/' a
bash-3.2$
而且这个命令应该是没用的,因为文件里面没有"。

论坛徽章:
0
7 [报告]
发表于 2008-06-29 13:30 |显示全部楼层
我在DOS下也正常。
D:\other\cygwin\home\walkerxk>cat a
a'b
a'b
a'b
a'b
a'b

D:\other\cygwin\home\walkerxk>sed -i 's/"/a/' a

D:\other\cygwin\home\walkerxk>

论坛徽章:
0
8 [报告]
发表于 2008-06-29 14:28 |显示全部楼层
什么批处理?bat?
D:\other\cygwin\home\walkerxk>a.bat

D:\other\cygwin\home\walkerxk>sed -i 's/"/a/' a

D:\other\cygwin\home\walkerxk>
而且我的a.bat和a里面都有\r的,都没事。

论坛徽章:
0
9 [报告]
发表于 2008-06-29 18:44 |显示全部楼层
删除^[开头,后面有]的行。

论坛徽章:
0
10 [报告]
发表于 2008-06-29 19:08 |显示全部楼层
删除只有^的行,^是开头,$是结尾,建议你去看看十三问:http://bbs.chinaunix.net/thread-218853-1-1.html
和新手导航:http://bbs.chinaunix.net/thread-674903-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP