免费注册 查看新帖 |

Chinaunix

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

sed如何替换特殊字符:单引号、大于号、等号? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-13 14:30 |只看该作者 |倒序浏览
想用sed s命令替换包含单引号、大于号、等号的大型文本
='换成=\'
'>换成\'>
\n换成\\n
\r换成\\r
使用过程中发现\为转义字符
sed -i.bak 's/\\n/\\\\n/g' bigtext.txt
sed -i 's/\\r/\\\\r/g' bigtext.txt
sed -i 's/=''/=\\''/g' bigtext.txt
都能正确替换
'>不知道如何替换成\'>

论坛徽章:
0
2 [报告]
发表于 2007-12-13 14:51 |只看该作者

  1. [root@mail ~]# cat a
  2. ='
  3. '>
  4. \n
  5. \r
  6. [root@mail ~]# sed "s/'>/\\\'>/" a
  7. ='
  8. \'>
  9. \n
  10. \r
  11. [root@mail ~]#
复制代码

论坛徽章:
0
3 [报告]
发表于 2007-12-13 16:09 |只看该作者
多谢精灵使!

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
4 [报告]
发表于 2007-12-13 16:58 |只看该作者
原帖由 ailms 于 2007-12-13 14:51 发表

[root@mail ~]# cat a
='
'>
\n
\r
[root@mail ~]# sed "s/'>/\\\'>/" a
='
\'>
\n
\r
[root@mail ~]#



我试了下这个sed "s/'>/\\'>/" a结果不正确..请问这句中\\'>和\\\'>的区别

论坛徽章:
0
5 [报告]
发表于 2007-12-13 20:51 |只看该作者
你用 echo 输出就知道了


  1. echo \\
复制代码


  1. echo \\\
复制代码

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
6 [报告]
发表于 2007-12-14 11:04 |只看该作者
请看:

  1. [root@mail /]# echo \\v
  2. \v
  3. [root@mail /]# echo \\\v
  4. \v
复制代码

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
7 [报告]
发表于 2007-12-14 12:57 |只看该作者
再请看:
  1. [root@mail test]# echo \\\\v
  2. \\v
  3. [root@mail test]# echo \\\\\v
  4. \\v
  5. [root@mail test]# echo \\\\\\v
  6. \\\v
  7. [root@mail test]#
复制代码


显示出来的\是不是可以看做这个

就是说输入的总是除以2得到的余数..但是发现

echo \\v 不是这样的..其它的好像都是

论坛徽章:
0
8 [报告]
发表于 2007-12-14 13:38 |只看该作者
上面给你的例子你执行就知道了,^_^

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
9 [报告]
发表于 2007-12-14 13:40 |只看该作者
  1. [root@linuxbash ~]# echo \\
  2. \
  3. [root@linuxbash ~]# echo \\\
  4. >
复制代码


不解..

还有7楼我写的正确否?

论坛徽章:
0
10 [报告]
发表于 2007-12-14 14:02 |只看该作者
再举一个例子


  1. Script started on Fri 14 Dec 2007 01:57:04 PM CST
  2. [root@home1 ~]# echo \
  3. > 2
  4. 2
  5. [root@home1 ~]# echo ok\
  6. > 2
  7. ok2
  8. [root@home1 ~]# echo ok\\
  9. ok\
  10. [root@home1 ~]# echo ok\\\
  11. > 2
  12. ok\2
  13. [root@home1 ~]# exit
  14. exit

  15. Script done on Fri 14 Dec 2007 01:57:50 PM CST
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP