OT: grep help

Giorgos Keramidas keramida at ceid.upatras.gr
Wed Mar 25 23:17:22 EET 2009


On Wed, 25 Mar 2009 21:55:18 +0200, John Beredimas <mperedim at ceid.upatras.gr> wrote:
>Christos Bacharakis wrote:
>> 2009/3/25 Giorgos Keramidas <keramida at ceid.upatras.gr
>> <mailto:keramida at ceid.upatras.gr>>
>>
>> Μην χάσεις εσύ.. Αμέσως perl.. =)
>
> Αφού δεν έστειλε κάτι σε emacs lisp για αυτή τη δουλειά πάλι καλά να
> λες! :-p

At your service...

Το παρακάτω function:

    (defun find-all-uris (uri-scheme)
      (interactive "sURI scheme (http): ")
      (when (or (null uri-scheme) (zerop (length uri-scheme)))
        (setq uri-scheme "http"))
      (let ((output (generate-new-buffer "uri-search")))
        (save-excursion
          (beginning-of-buffer)
          (while (search-forward-regexp
                  (concat "\\(" (regexp-quote uri-scheme) ":[^\"']+\\)")
                  (point-max) t)
            (let ((uri (match-string 1)))
              (with-current-buffer output
                (insert (format "%s\n" uri))))))
        (pop-to-buffer output)))

μπορεί να τρέξει αφού έχει φορτώσει ένα text buffer με το χύμα κείμενο,
π.χ. σαν αυτό:

    ,-----------------------------------------------------------------
    | <a href="http://foo">bar</a><a href="http://koko">lala</a>
    |
    |
    |
    |
    |
    |-77-:@----F10  foo            All (1,24)     (Fundamental)-------
    |
    `-----------------------------------------------------------------

Γράφοντας `M-x find-all-uris RET' θα δεις ένα prompt της μορφής:

    URI scheme (http):

με ένα δεύτερο RET ψάχνει στο αρχικό buffer για όλα τα URIs με αυτό το
URI scheme, και τα αντιγράφει σε ένα temporary νέο buffer με όνομα
"uri-search".  Στο τέλος φέρνει το output buffer στο προσκήνιο, μήπως
θέλεις να αντιγράψεις τίποτα από τα URIs που βρήκε:

    ,-----------------------------------------------------------------
    | <a href="http://foo">bar</a><a href="http://koko">lala</a>
    |
    |
    |-77-:@----F10  foo            All (1,24)     (Fundamental)-------
    |http://foo
    |http://koko
    |
    |-77U:@**--F10  uri-search<6>   All (3,0)      (Fundamental)------
    |
    `-----------------------------------------------------------------

Έχει ένα μικρό limitation όμως.  Δε μπορεί να δουλέψει με input αρχεία
πάνω από περίπου 270 MB σε Emacs/i386 επειδή κάπου εκεί είναι το buffer
size limit.

Enjoy :)



More information about the Linux-greek-users mailing list