代码之家  ›  专栏  ›  技术社区  ›  dynamicJos

删除行开头同时有+和-字符的所有文本内容

  •  -1
  • dynamicJos  · 技术社区  · 7 年前

    -此文件夹包含公用数据库脚本。

    +此文件夹包含公用数据库脚本。

    +新线

    所以在上面的例子中-我想删除前两行,也就是在开头同时有一个+和-字符。

    即 结果如下

    +新线

    如何在Shell/Bash/git中实现这一点。

    2 回复  |  直到 7 年前
        1
  •  1
  •   justaguy    7 年前

    一个 awk 解决方案:

    cat example
    
    -This folder contains common database scripts.
    
    +This folder contains common database scripts.
    
    +New Line
    
    
    awk 'f~/+ || -/ && /+ || -/ {f=$0;next} NR>1 {print f} {f=$0} END {print}' example
    
    +New Line
    
        2
  •  0
  •   Jon    7 年前

    如果你在一个名为 plusminus.txt 你不介意把线整理出来,这样就可以了。它会按顺序工作 + - 线条和匹配 + - 线不需要挨在一起。

    comm -23 <(grep '^+' plusminus.txt | sort) \
             <(sed -n 's/^-/+/p' plusminus.txt | sort)
    
    推荐文章