Hallo Gutschy,
Unter den nachstehend genannten Randbedingungen sollte das awk-Skript der Grundstock einer Lösung sein:
1. Das Feldtrennzeichen ist das Komma --->daher Option -F","
2. Zwischen Zeilen 802 und 968 jeweils EINSCHLIESSLICH; ansonsten ">" anstatt ">=" usw.
3. Das 38. Feld besteht entweder nur aus einer "0" oder einer "1". Ist keine "1" vorhanden, dann Feld 38 so belassen, ansonsten seinen Wert unverändert lassen.
4. Änderung wirkt auf ALLE Zeilen im angegebenen Bereich.
awk -F"," \
'{
if ((NR >= 802) && (NR <= 968)) {
if ($38 == "1") {
Feld38 = "0";
# Zusammenfassen der Felder 1 - 37 für Ausdruck
str_Teil1 = $1;
for(i=2;i<=37;i++) str_Teil1 = sprintf("%s,%s",str_Teil1,$i);
# Zusammenfassen der Felder ab Feld 38 aufwärts für Ausdruck
str_Teil2 = $39;
for(i=40;i<=NF;i++) str_Teil2 = sprintf("%s,%s",str_Teil2,$i);
# Ausdruck der geänderten Zeile:
printf("%s,%s,%s\n",str_Teil1,Feld38,str_Teil2);
} else
printf("%s\n",$0);
} else
printf("%s\n",$0);
}
}' < eingabe-datei > ausgabe-datei
HINWEIS:
Führende Leerzeichen zum Einrücken zwecks besserer Lesbarkeit wurden vom MRUNIX-System entfernt.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.