求用sed插入多行带特殊字符的方法

richbirdandy 2010-07-17 03:20:32
比方我有个t.cpp文件

里面有一行//tag

我想在这行前面插入一段代码 当然这段代码会有/"(之类的特殊字符

如果用sed -i '/pattern/i src' filename 这种 需要对src代表的字符串中特殊字符加\

如果用sed -i '/pattern/r file' filename 这种 把插入代码放入一个临时文件中 但只能插入后面

不知怎样把这两种组合一下 即能从文件插入 又能插入到匹配行的前面

或者能提供其他的方法

主要是不想复制粘贴了,想搞个自动生成代码的脚本。。
...全文
487 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tsabo_gh 2010-08-05
  • 打赏
  • 举报
回复
如果有特殊字符就在前面用“\”转义啊,或者使用别的符号当分割符,如“#”之类。
richbirdandy 2010-07-17
  • 打赏
  • 举报
回复
谢谢一楼的方法

to 3楼 放前面是为了看起来方便

如果放在tag后面 那就是要新加的代码都放到前面 大家看起来也不爽
steptodream 2010-07-17
  • 打赏
  • 举报
回复
楼上的就能实现了
//tag是注释 又不是有效代码
所以我觉得插在//tag的前面和后面 效果是一样的啊 为什么非要查在前面呢?
或者你吧//tag肯定能放到查在前面后面都一样的情况吧
brookmill 2010-07-17
  • 打赏
  • 举报
回复
sed -i '/tag/i fdsjiorwqeuopi' t.cpp
sed -i '/fdsjiorwqeuopi/r file' t.cpp
sed -i '/fdsjiorwqeuopi/d' t.cpp

怎么我想到的都是这种邪门歪道呢?
brookmill 2010-07-17
  • 打赏
  • 举报
回复
如果只有一行//tag那就好办了
line=`grep -n tag t.cpp | cut -d ":" -f 1`
line=$((line-1))
sed -i "$line r file" t.cpp

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧