Sed 在行间插入单词
我有pdb(蛋白质数据库)文件,它有数千行Sed 在行间插入单词,sed,Sed,我有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
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”,因为它包含20000多行,但忽略了第一行,因为它是一条注释
我在网上浏览,似乎塞德能做到。但是我迷路了
有人能指引吗?
提前感谢。试试这个:
sed -i -e '1~81 i\TER' file
我偏爱
awk
我自己:
awk '{if(FNR%81==0)print "TER"; print}' file
我发现这比同等的sed
更容易理解和调试。唯一的神奇之处在于FNR
是行号
您可能需要摆弄
if
中的数字,才能得到您想要的结果。更详细的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
{
读标题
回显“$header”
i=0
边读边做
回音“$line”
如果(++i==81));那么
回声计
i=0
fi
完成
}outfile&&
中压输出管填充
+1但更多的awk-ish将是awk'!(FNR%81){print“TER”}1'文件