跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • sed 删除代码块,有没有一次性好办法呢?
未分類
30 3 月 2021

sed 删除代码块,有没有一次性好办法呢?

sed 删除代码块,有没有一次性好办法呢?

資深大佬 : sjmcefc2 4

如题:
aaa
123
123
123
123
123
eee

需求 是删除 aaa 开头 到 eee 结尾的代码块,
这样需要如何写呢?

大佬有話說 (15)

  • 資深大佬 : ppxppx

    find . -type f | xargs sed -i ‘s/^aaa.*eee$//g’

  • 主 資深大佬 : sjmcefc2

    代码块是不同行的
    ^aaa 是开头吧,eee$是结尾。

    这样是不是必须要同一行才可以删除呢

  • 資深大佬 : elsonwx

    find . -type f|xargs sed -i.bak ‘/aaa/,/eee/d’

  • 資深大佬 : yuanmomo

    @sjmcefc2 sed 可以匹配行的方式来匹配起始行号,然后操作这个行范围之内的

  • 資深大佬 : Akiyu

    sed 有多行模式. 你可以参考一下.
    那东西不仅麻烦也很少用, 一般你得自己研究.
    https://www.gnu.org/software/sed/manual/sed.html
    重点关注一下. 7.1 Joining lines
    我记得之前有用它处理过多行文本处理的问题. 应该是可行的.

  • 資深大佬 : scinart

    sed 从 3 删到 6, see `info sed` 6.3 Multiline techniques

    seq 9 | sed ‘/3/{:x; s.6.6.; tn; N; bx; :n; d;}’

  • 資深大佬 : Jirajine

    你在这里琢磨 sed 的时间,直接用 Python 已经写好了。

  • 主 資深大佬 : sjmcefc2

    python 也可以?大神赐教

  • 資深大佬 : kokutou

    py 按行读取, 写入到临时文件, 遇到 aaa 就不写了,到了 eee 再继续写….

  • 主 資深大佬 : sjmcefc2

    @elsonwx 这个可行,’/aaa/,/eee/d’ 里面这个,的意思是啥呢

  • 主 資深大佬 : sjmcefc2

    另外,不如我想在 aaa 和 eee 之间插入一些不同行的代码,该怎么做呢

  • 主 資深大佬 : sjmcefc2

    另外,不如我想在 aaa 和 eee 之间插入一些不同行的代码,该怎么做呢
    —–
    用n 来换行就可以了。

  • 資深大佬 : no1xsyzy

    基本骨架长这样

    #!/usr/bin/env python3
    import sys
    for line in sys.stdin:
      assert line[-1] in “rn”
      sys.stdout.write(line)

    chmod +x 或者 python3 a <in.txt >out.txt
    然后随意改改就成。

  • 資深大佬 : no1xsyzy

    (啊,如果最后一行结尾不在第一列是没有 line break 的,忘记那句 assert 吧

  • 資深大佬 : smyle

    sed ‘/aaa/,/eee/d’ $文件名
    意思就是删除 aaa 到 eee 之间的所有行(正则匹配,包括 aaa 和 eee 本身)

    如果要保留 aaa 和 eee 这两行的话
    sed ‘/aaa/,/bbb/{/aaa/!{/bbb/!d}}’ $文件名

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具