+ -
当前位置:首页 → 问答吧 → sed 使用a在指定行添加内容的奇怪问题

sed 使用a在指定行添加内容的奇怪问题

时间:2011-07-09

来源:互联网

想在一个xml文件中添加一段新的节点内容时,出现了一个比较奇怪的问题
因为想让添加的xml的内容格式好看点,于是在加入内容时,使用一个 \t 想让内容前加个tab
结果这个 /t死活不生效,一直作为一个字符t出现在文本里
太奇怪了

sed -i "86a \t<bean id=\"sqlTest\" class=\"com.sql.mysql\">"  sql_map.xml


结果 86行就是:    t  <bean id="sqlTest" class="com.sql.mysql">

奇怪,\t为什么不能转换为tab呢

作者: godymoon   发布时间: 2011-07-09

a\
\\\t
需要转义,我试出来的。

作者: Nalternative   发布时间: 2011-07-09

回复 godymoon
  1. seq 10 |sed '2a\
  2. \t number
  3. '
  4. 1
  5. 2
  6.          number
  7. 3
  8. 4
  9. 5
  10. 6
  11. 7
  12. 8
  13. 9
  14. 10
复制代码

作者: yinyuemi   发布时间: 2011-07-09

  1. seq 10|sed '2a\\t zooyo'
  2. 1
  3. 2
  4.          zooyo
  5. 3
  6. 4
  7. 5
  8. 6
  9. 7
  10. 8
  11. 9
  12. 10
复制代码
sed --version
GNU sed version 4.2.1

作者: zooyo   发布时间: 2011-07-09

回复 zooyo


    我的

sed --version
GNU sed version 4.1.4
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.

作者: godymoon   发布时间: 2011-07-09

回复 Nalternative


   

QUOTE:
a\
\\\t
需要转义,我试出来的。



为什么开头需要转义呢,中间的话是没问题的

作者: godymoon   发布时间: 2011-07-09

回复 yinyuemi


      貌似我用错了? a后面少了个 "\" ,不记得为什么要加这个了

作者: godymoon   发布时间: 2011-07-09



QUOTE:
回复  yinyuemi


      貌似我用错了? a后面少了个 "\" ,不记得为什么要加这个了
godymoon 发表于 2011-07-09 13:17



   如果不需要转义的话,可以不加,
   不过 sed中的a,i,c选项的使用最好是加\,这样可以确保添加,修改的内容中包含需要转义的符号不出问题。

作者: yinyuemi   发布时间: 2011-07-09