运维之我见 2015-09-12 01:08 采纳率: 0%
浏览 3738

关于使用sed删除指定行的问题

业务需求,要写一个脚本定期收集目录下的文件
涉及到一个去重的功能
cat 1.txt
/date/file1/x
/date/file1/y
/date/file1/z

j=/date/file1/x

sed "/$j/d" 1.txt

sed "/'$j'/d" 1.txt

如上 我想删除1.txt中 包含 /date/file/x的 行 ,使用上面的sed 命令都无法实现。 不知哪里不对。求指导!

  • 写回答

1条回答 默认 最新

  • oxcow 2015-09-12 02:57
    关注

    首先 sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。

    其实 / 是 sed的分割符号,因此如果匹配字符中包含 / 那么需要转义

    所以,要删除包含 /date/file/x 的可以如下操作:

     sed '/\/data\/file\/x/d' 1.txt
    

    上述语句结果被打印到屏幕上,文件本身并未被修改!。如果需要修改文件那么可以用下面的语句

     sed  -i '/\/data\/file\/x/d' 1.txt
    
    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退