(defun modify-file (in function &optional (out in)) (let ((content (with-open-file (stream in :direction :input) (with-output-to-string (string) (let ((buffer (make-array 4096 :element-type 'character))) (loop for bytes = (read-sequence buffer stream) do (write-sequence buffer string :start 0 :end bytes) while (= bytes 4096))))))) (with-open-file (stream out :direction :output :if-exists :supersede) (write-sequence (funcall function content) stream)))) (modify-file #p"wordlist.txt" #'(lambda (a) (cl-ppcre:regex-replace-all "([^×]*)×(.*)\\n" a "\\2 \\1 ")))