删除以某个单词开头的多个文本文件中的行

时间:2014-06-23 13:41:28

标签: bash shell terminal grep csh

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

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

2 个答案:

答案 0 :(得分:2)

像这样使用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中)的输出的临时文件,并且只有在命令成功执行时才会覆盖原始文件。

答案 1 :(得分:0)

使用-v的{​​{1}}选项获取所有不匹配的行:

grep