Én úgy vélem, hogy a scriptek terén a legjobb megoldás az, amit a padtársam is ért, hogy ha hozzá kell nyúlnia, akkor ne kérdezzen bele, mert akkor kiderül, hogy már rég elfelejtettem, hogy azt miért pont úgy írtam. :-)
Itt jon elo a Python olvashatosaga. Az meg, hogy par millisec-cel lassabb (bar awk-hoz kepest lehet, hogy az sem) meg kb. mindegy erre a felhasznalasra. Ez mindenben megirhato, amiben van filekezeles meg asszociativ tomb, es a kod is nagyjabol azonos lesz: beolvasod soronkent, ha ujabb a timestamp a letaroltnal, vagy uj a host, akkor eltarolod, a file vegen meg kiirod az egeszet.
Lehet meg cizellalni, de kb. ennyi:
#!/usr/bin/env python3
import sys
if len(sys.argv) < 2:
print(f"Usage e.g.: {sys.argv[0]} input.txt")
for filename in sys.argv[1:]:
newest_backup_time = {}
with open(filename, "r") as input_file:
for row in input_file:
row_elements = row.split()
timestamp, hostname = row_elements[0], row_elements[-1]
if hostname not in newest_backup_time or newest_backup_time[hostname] < timestamp:
newest_backup_time[hostname] = timestamp
for hostname, timestamp in newest_backup_time.items():
print(f"UPDATE servers set backup='{timestamp}' WHERE hostname='{hostname}';")
Szerintem olvashatobb, mint a perl, awk, meg hasonlo szornyusegek - meg ha nem is ismered a konkret szintaxist, akkor is.
Ha picit hosszabb, lehet clean code-ozni, de itt az egesz program ennyi, nem szorakoznek vele.