【发布时间】:2014-08-13 14:05:09
【问题描述】:
我在一个目录中有数百个文本文件。对于所有文件,我想删除所有以 HETATM 开头的行。我需要一个 csh 或 bash 代码。
我认为你会使用 grep,但我不确定。
【问题讨论】:
标签: bash shell terminal grep csh
我在一个目录中有数百个文本文件。对于所有文件,我想删除所有以 HETATM 开头的行。我需要一个 csh 或 bash 代码。
我认为你会使用 grep,但我不确定。
【问题讨论】:
标签: bash shell terminal grep csh
像这样使用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 中),并且只有在命令成功执行时才会覆盖您的原始文件。
【讨论】:
使用grep的-v选项获取所有不匹配的行:
grep -v '^HETATM' input.txt > output.txt
【讨论】: