Мое регулярное выражение было проверено (с помощью онлайн-шашек) и работает. Я пытаюсь получить http-ссылки из файла, но конкретно , за исключением http ссылок, заканчивающихся расширением изображения (jpg, gif), используя это;Почему эта команда grep не исключает изображения?
grep -Eo '(http|https|rtmp)://[a-zA-Z0-9:0-9./[email protected]&%|()[:blank:],;-]*' | grep -v '.(?:jpg|gif|png)'
Это мой файл, на котором работает grep;
LONDON Remote server cluster 88: taken, https://www.wiredcontent/rashida_opener_background2.jpg
http://www.8379f690ba57e0fdf8f944324a4453de67780/tsa.a3m
BRUSSELS: Hosted MPLS cluster
http://www.5b0e9bc72b989c87a9a70da7865dbb5b4aa9c086/tsa.a3m
PARIS: Hosted atrium access, https://i.gadgets360cdn.com/large/dell_UP3218K_1483646315000.gif
http://www.39415215319c9brt6b9c7d10238c19cc82e7f88b/tsa.a3m
PRAGUE: Main Office access,
http://www.e721f751ab0936706192cf15b4632889b38f131a/tsa.a3m
Я хочу Grep вернуть это:
http://www.8379f690ba57e0fdf8f944324a4453de67780/tsa.a3m
http://www.5b0e9bc72b989c87a9a70da7865dbb5b4aa9c086/tsa.a3m
http://www.39415215319c9brt6b9c7d10238c19cc82e7f88b/tsa.a3m
http://www.e721f751ab0936706192cf15b4632889b38f131a/tsa.a3m
Спасибо заранее.
UPDATE: Ответ на Vatsug ниже очень полезен и работает с файлом file.txt со ссылками, но если ссылки передаются из переменной внутри скрипта, мне пришлось сделать что-то вроде этого: 'link = $ (printf "% s \ n" "$ line" | grep -Eo '(http | https): // [a-zA-Z0-9: 0-9 ./[email protected]&% |() [: blank:],; -] * '| grep -vP (http | https | rtmp): // [a-zA-Z0-9: 0-9 ./[email protected]&% |() [ : blank:],;] * (jpg | png | gif) ') ' – manners