我有pdb(蛋白质数据库)文件,有几千行。
REMARK 1 PDB file generated by ptraj (set 1000)
ATOM 1 O22 DDM 1 2.800 4.419 20.868 0.00 0.00
ATOM 2 H22 DDM 1 3.427 4.096 20.216 0.00 0.00
ATOM 3 C22 DDM 1 3.351 5.588 21.698 0.00 0.00
ATOM 4 H42 DDM 1 3.456 5.274 22.736 0.00 0.00
ATOM 5 C23 DDM 1 2.530 6.846 21.639 0.00 0.00
ATOM 6 H43 DDM 1 2.347 7.159 20.611 0.00 0.00
ATOM 7 O23 DDM 1 1.313 6.498 22.334 0.00 0.00
ATOM 8 H23 DDM 1 0.903 5.837 21.771 0.00 0.00
ATOM 9 C24 DDM 1 3.073 8.109 22.266 0.00 0.00
ATOM 10 H44 DDM 1 3.139 7.837 23.319 0.00 0.00
ATOM 11 O24 DDM 1 2.218 9.278 22.007 0.00 0.00
ATOM 12 H24 DDM 1 1.278 9.184 22.179 0.00 0.00
ATOM 13 C25 DDM 1 4.494 8.317 21.764 0.00 0.00
ATOM 14 H45 DDM 1 4.391 8.452 20.687 0.00 0.00
我想在该文件中每81行插入一个单词“TER”,其中包含超过20,000行但忽略第一行,因为它是注释。
我浏览互联网,似乎SED可以做到。但我迷路了。
任何人都可以指导吗? 提前谢谢。
答案 0 :(得分:1)
试试这个:
sed -i -e '1~81 i\TER' file
答案 1 :(得分:1)
我偏爱awk
自己:
awk '{if(FNR%81==0)print "TER"; print}' file
我发现这比sed
等价物更容易理解和调试。唯一的魔力是FNR
是行号
你可能不得不使用if
中的数字来完全按照你想要的方式获得数字。
答案 2 :(得分:0)
更详细的shell命令是
{
read header
echo "$header"
i=0
while read line; do
echo "$line"
if (( ++i == 81 )); then
echo TER
i=0
fi
done
} < infile > outfile &&
mv outfile infile