Versuchen Sie, einen Wert in einer Reihe von Dateien mit Shell-Befehlen zu ersetzen (um in einem Skript die Dateien in einem Verzeichnis zu durchlaufen).Ersetzen Sie einen Wert nur, wenn größer als
Input file examples:
file1:
019=False
051=Limited
051>Limited Lease Time=2419200
file2:
019=False
051=Limited
051>Limited Lease Time=14400
Das funktionierte in Ordnung:
sed -e '/Limited Lease Time=/s/[0-9]\+$/86400/g' <infile >outfile
# cat outfile
019=False
051=Limited
051>Limited Lease Time=86400
Aber ... dann realisiert, dass ich jeden Wert wurde ersetzt, darunter auch solche, niedriger ist als 86400, wenn ich nur etwas mehr als 86400
ersetzen möchtenich dachte, ich awk verwenden könnte, und diese ‚Art‘ gearbeitet, wie in der Ausgabe nur ‚begrenzte Lease Time‘ war Linien, die einen Wert hat,> 86400:
awk -F= '/Limited Lease Time/ && $2 > 86400 { print $2 }'
Aber ... es nur ist outputing die abgestimmte Linie, während ich brauche die Originalausgabe (3 Zeilen in den Beispielen), die Änderung einschließlich, wenn der angepassten Wert> 86400
einige Ratschläge auf eine Art und Weise schätzen zu handhaben Dies !
Arbeitete groß, dank konfigurierbar machen! Benutzte die awk-Zeile mit dem Variablenimport '-v', um es in meinem Skript sauberer zu machen. Vielen Dank. Gerade jetzt, um die Manpage zu lesen und genau herauszufinden, was es macht ;-) – kpw