Ich muss eine große Datei bearbeiten, in der die Spalten für jeden Datensatz nicht durch ein Zeichen begrenzt sind, sondern eine feste Länge haben. Ich möchte einen Wert in der ersten Spalte suchen und, falls er gefunden wird, den Wert der 3. Spalte ändern.awk/sed: Wenn Spalte 1 übereinstimmt, ändere Wert von Spalte 3
Ich kann nicht die Datei aus, wo es ist, so kann ich nur die Befehlszeile mit awk, sed und vielleicht Java 5. sonst würde ich andere Lösungen versuchen.
bigfile.dat Struktur:
Column1Col2Column3Column4Col5
Beispiel:
id12345TEXTVALUE01SOMCODETEXT
id23456TEXTVALUE02SOMCODETEXT
id34567TEXTVALUE02SOMCODETEXT
id45678TEXTVALUE01SOMCODETEXT
id56789TEXTVALUE03SOMCODETEXT
Was ich brauche: set VALUE04 für id45678
id12345TEXTVALUE01SOMCODETEXT
id23456TEXTVALUE02SOMCODETEXT
id34567TEXTVALUE02SOMCODETEXT
id45678TEXTVALUE04SOMCODETEXT
id56789TEXTVALUE03SOMCODETEXT
Ich weiß nicht, ob dies möglich ist. Hier einige Pseudo-Code, den ich vielleicht dachte könnte mit awk arbeiten:
if (match id = subtr(Column1))
print subtr(Column1+Col2) + "mychange" +substr(Column4+Col5)
else
print unchanged line
Ich frage nicht, meine Arbeit für mich zu tun, ich weiß nur nicht, ich verschwende meine Zeit mit den Tools, die ich habe oder Mir fehlt einfach das Wissen.
Danke.
Das hat perfekt funktioniert. Es sieht so einfach aus, aber die Wahrheit ist, dass ich sehr lange gebraucht hätte um dorthin zu kommen. Danke vielmals. – welemmanuel