【问题标题】:Remove Lines in Multiple Text Files that Begin with a Certain Word删除多个文本文件中以某个单词开头的行
【发布时间】:2014-08-13 14:05:09
【问题描述】:

我在一个目录中有数百个文本文件。对于所有文件,我想删除所有以 HETATM 开头的行。我需要一个 csh 或 bash 代码。

我认为你会使用 grep,但我不确定。

【问题讨论】:

    标签: bash shell terminal grep csh


    【解决方案1】:

    像这样使用sed

    sed -i -e '/^HETATM/d' *.txt
    

    处理所有文件。

    -i 表示“到位”。

    -e 表示执行后面的命令。

    /^HETATM/表示“查找以HETATM开头的行”,后面的d表示“删除”。

    先做好备份!

    如果你真的想用grep 来做,你可以这样做:

    #!/bin/bash
    
    for f in *.txt
    do
       grep -v "^HETATM" "%f" > $$.tmp && mv $$.tmp "$f"
    done
    

    它会生成来自grep 的输出的临时文件(在文件$$.tmp 中),并且只有在命令成功执行时才会覆盖您的原始文件。

    【讨论】:

      【解决方案2】:

      使用grep-v选项获取所有不匹配的行:

      grep -v '^HETATM' input.txt > output.txt
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-27
        • 2012-07-06
        • 2019-09-21
        • 1970-01-01
        • 2018-03-07
        • 2011-11-27
        • 2018-06-15
        • 1970-01-01
        相关资源
        最近更新 更多