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