( Nyosigomboc | 2024. 05. 29., sze – 16:00 )

É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.