我在一个目录中有数百个文本文件。对于所有文件,我想删除所有以HETATM开头的行。我需要一个csh或bash代码。
我认为你会使用grep,但我不确定。
答案 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