テキストファイルがあり、23文字目のすべての値がありますが、最初から始めて最終値に達するまで各行を増やすには0
その値が必要です。X
1
58
64
私はこのコードを試しましたが、具体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