簡単に:

簡単に:

テキストファイルがあり、23文字目のすべての値がありますが、最初から始めて最終値に達するまで各行を増やすには0その値が必要です。X15864

私はこのコードを試しましたが、具体sed的ではなく0すべての値を64値に変更します。

for i in $(seq 1 1 64); do
   sed -e "s/0/$i/g" file.txt > newfile.txt
done

私が持っているものは次のとおりです。

ATOM  1     C0   ODA  0          1.452   2.430  23.632  1.00  1.00           C
ATOM  2     C1   ODA  0          1.839   1.672  22.372  1.00  1.00           C
...
ATOM  3711  H56  ODA  0         30.750  32.945   0.998  1.00  1.00           H
ATOM  3712  H57  ODA  0         31.934  32.195   0.165  1.00  1.00           H

そして私が望むもの。

ATOM  1     C0   ODA  1          1.452   2.430  23.632  1.00  1.00           C
ATOM  2     C1   ODA  1          1.839   1.672  22.372  1.00  1.00           C
...
ATOM  3711  H56  ODA  64        30.750  32.945   0.998  1.00  1.00           H
ATOM  3712  H57  ODA  64        31.934  32.195   0.165  1.00  1.00           H

私はsedまだそれを使用することに慣れていません。それは私のbashの知識の限界です。もっと良いかもしれませんがawk、それについてはわかりません。

ベストアンサー1

もしあなたなら本物フィールド内の特定の文字位置を変更する必要がある場合は、空のフィールドフィールド区切りawk文字を設定できます。

awk 'BEGIN{FS=""; OFS=FS} {$23 = int(FNR / 58) + 1 ; print}' file

OTOH本当に5番目のスペースを分離して修正したい場合大地その後、デフォルトの区切り文字を使用できます。

awk '{$5 = int(FNR / 58) + 1 ; print}' file

おすすめ記事