Hallo zusammen,
ich bin neu hier und habe über die suche Funktion nichts passendes gefunden. ich habe folgendes Problem: ich habe die unten aufgeführte Datei und würde gerne die Nummer die hinter ATOM steht jeweils in der gleichen Zeile an der stelle wo "H 1" steht setzen.
ATOM 99974 0 DEN H 1 58.500 31.500 -0.500 1.00 0.160 D ATOM 99975 0 DEN H 1 58.500 31.500 0.500 1.00 0.545 D ATOM 99976 0 DEN H 1 58.500 31.500 1.500 1.00 0.671 D ATOM 99977 0 DEN H 1 58.500 31.500 2.500 1.00 0.551 D ATOM 99978 0 DEN H 1 58.500 31.500 3.500 1.00 0.487 D ATOM 99979 0 DEN H 1 58.500 31.500 4.500 1.00 0.551 D ATOM 99980 0 DEN H 1 58.500 31.500 5.500 1.00 0.718 D ATOM 99981 0 DEN H 1 58.500 31.500 6.500 1.00 0.669 D ATOM 99982 0 DEN H 1 58.500 31.500 7.500 1.00 0.537 D ATOM 99983 0 DEN H 1 58.500 31.500 8.500 1.00 0.569 D ATOM 99984 0 DEN H 1 58.500 31.500 9.500 1.00 0.613 D ATOM 99985 0 DEN H 1 58.500 31.500 10.500 1.00 0.601 D ATOM 99986 0 DEN H 1 58.500 31.500 11.500 1.00 0.611 D ATOM 99987 0 DEN H 1 58.500 31.500 12.500 1.00 0.649 D
Die Daten sind sehr umfangreich. ich habe ca. 20 Daten mit dem selben Aufbau in denen diese Änderungen vorgenommen werden müssen. ich brauche eben an der Stelle "H 1" die nummerierung.
meine Skript basierte Lösung war, dass ich jede Zeile einzeln ansteuere und "99987 0 DEN H 1" durch "99987 0 DEN 99987" ersetze. Also:
1 | sed -i -e '99985s/99985 0 DEN H 1/99985 0 DEN 99985/' file |
Mein Problem ist nur eine Datei hat 99999 Zeilen. das Skript so für jede Zeile ist fertig und läuft auch, aber durch die unglaublich vielen suchen und ersetzen befehle benötigt das Skript ca. 16 Stunden.
Daher habe ich mich gefragt ob es nicht eine Möglichkeit gibt mit "sed" im Skript zu sagen: Ersetze in jeder Zeile das 22. Zeichen (H) durch das 7. (erste 9)
so hätte ich nur 5 suchen und ersetzen Befehle anstelle von 99999. Leider hat mir meine google suche nicht wirklich geholfen.
Ich endschuldige mich schon einmal, wenn ich nicht viele gegenfragen beantworten kann. Ich bin Biologe und mein wissen über das erstellen von Shell Skripten ist doch sehr begrenzt.
Danke für eure Hilfe
Bearbeitet von rklm:
Block verkleinert, Codeblock hinzugefügt. Bitte mach Dich mit der Forum/Syntax vertraut.