forked from colonelpanic/dotfiles
merge_zsh_history.py
This commit is contained in:
parent
2862c6e131
commit
f52df65b50
32
dotfiles/lib/python/merge_zsh_history.py
Normal file
32
dotfiles/lib/python/merge_zsh_history.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import re
|
||||||
|
|
||||||
|
history_entry_re = re.compile(": ([0-9]*):[0-9]*;.*")
|
||||||
|
|
||||||
|
def merge_history(filenames):
|
||||||
|
pairs = [entry for filename in filenames for entry in entry_timestamp_pairs(filename)]
|
||||||
|
return "".join([p[0] for p in sorted(pairs, key=lambda pair: pair[1])])
|
||||||
|
|
||||||
|
|
||||||
|
def entry_timestamp_pairs(filename):
|
||||||
|
pairs = []
|
||||||
|
with open(filename, 'r') as file:
|
||||||
|
entry = None
|
||||||
|
timestamp = None
|
||||||
|
for line in file.readlines():
|
||||||
|
if line[0] == ":":
|
||||||
|
if entry != None:
|
||||||
|
pairs.append((entry, timestamp))
|
||||||
|
timestamp = timestamp_from_line(line)
|
||||||
|
entry = line
|
||||||
|
else:
|
||||||
|
entry += line
|
||||||
|
return pairs
|
||||||
|
|
||||||
|
|
||||||
|
def timestamp_from_line(line):
|
||||||
|
return int(history_entry_re.search(line).group(1))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import sys
|
||||||
|
print merge_history(sys.argv[1:])
|
Loading…
Reference in New Issue
Block a user