Sed 在行间插入单词

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

我有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”,因为它包含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'文件