#!/bin/sh # fl: Find Links # uses regular expressions to find links in the stream it's given, # or its args if it is given args # from pure-sh-bible, strips from the start of a string lstrip() { printf '%s\n' "${1##"$2"}" } # url-finding regex re_urls='(((https?|aesgcm)://|www\.)[[:alnum:].]*:?[[:alnum:]./@$&%?$#=_-]*)' # finds links, puts them in a list # sort -u prevents duplicates, but also sorts the links urlparse() { input="$(if [ -n "$1" ]; then printf '%s\n' "$*"; else cat; fi)" lstrip "$input" "*\│" | grep -Eo "$re_urls" | sort -u | sed 's|^www.|http://www\.|g' } set -- $(urlparse "$@") # wipe IFS so dmenu handles being sent the links properly IFS= # send any found links to select so one can be chosen to be sent to the clipboard #select url; #do # printf '%s' "$url" #done for url; do printf '%s\n' "$url" done #[ -n "$urls" ] && # echo $urls | dmenu -i -p 'copy which url?' -l 10 | xclip -r -sel c