I want to convert the timestamps in a .zsh_history file to their readable equivalents.

Is there some search and replace I can do in emacs that will replace the time with something like (format-time-string unixtime)?

: 1568128379:0;cp -a ~/.zshrc.pre-oh-my-zsh ~/.zshrc
: 1568128381:0;exit
  • vfclists@alien.topOPB
    link
    fedilink
    English
    arrow-up
    1
    ·
    11 months ago

    Here is the solution for my .zsh_history example:

    I first created a small function for the unix time string. More of the functionality in the replacement string can be included if preferred.

        (defun rgx-get-time-string (unixtimestr)
         (format-time-string "%Y-%m-%d %H:%M" (string-to-number unixtimestr))
          )
    

    The search string: \(: \)\([0-9]\{10\}\)\(:0;\)

    The replacement string: \,(concat (format "%6d " (line-number-at-pos)) (rgx-get-time-string (match-string 2)) " "))

    (match-string 2) is an alternative for the back reference for the second string matched\2