1

何千行もある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でできるようです。しかし、私は迷子になっています。

誰でもガイドできますか?前もって感謝します。

4

3 に答える 3

1

これを試して:

sed -i -e '1~81 i\TER' file
于 2012-11-28T07:30:16.897 に答える
1

私はawk自分自身に偏っています:

 awk '{if(FNR%81==0)print "TER"; print}' file

sedこれは、同等のものよりも理解しやすく、デバッグしやすいことがわかりました。唯一の魔法はFNR行番号です

if希望どおりに正確に取得するには、 の数値をいじる必要がある場合があります。

于 2012-11-28T07:38:12.137 に答える
0

より冗長なシェル コマンドは次のようになります。

{
    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
于 2012-11-28T16:36:55.167 に答える