adiaryの標準datファイルをソートする
動作保証はありません。
#!/usr/bin/env python3 from pathlib import Path import re re_terminate = re.compile("<<(.*)$") def sortdat(f): with f.open() as fin: s = fin.read() kvs = [] lines = s.split("\n") cur = 0 while cur < len(lines): if len(lines[cur]) == 0: cur += 1 continue if not "=" in lines[cur]: return if lines[cur].startswith("*"): line = lines[cur] terminate = re_terminate.search(line).group(1) i = cur + 1 while not terminate in lines[i]: i += 1 kvs.append("\n".join(lines[cur:i+1])) cur = i else: kvs.append(lines[cur]) cur += 1 with f.open("w", encoding="utf8") as fout: fout.write("\n".join(sorted(kvs)) + "\n") if __name__ == "__main__": for f in Path("/usr/local/apache2/htdocs").glob("**/*.dat"): sortdat(f)