LINUX.ORG.RU

Найти и заменить, bash-скрипт, сложное условие

 ,


1

3

Добрый день. У меня имеется файл, содержащий кучу URL, разделённых переводом строки. Каждый URL начинается либо с «http://», либо с «https://». После этого идёт собственно адрес, который может в некоторых редких случаях включать в себя двоеточие. Так вот, мне нужно вставить в баш-скрипт некую конструкцию, которая прошерстит этот файл, пропустит все двоеточия после http и https в начале строки, а остальные заменит на «\:» (экранированное двоеточие).

Если это слишком легко, есть задача со звёздочкой. В файле может в особо редких случаях проскакивать строка вида:

http://site.com/some/shit/here/http://and/some/more/
и её нужно заменить на:
http://site.com/some/shit/here/http\://and/some/more/

с двумя звёздочками: уже экранированные второй раз экранировать не надо.

Elyas ★★★★★
()
Последнее исправление: Elyas (всего исправлений: 1)

После http:// тебе не экранировать символы надо, а конвертировать. Задача-то какая?

r3lgar ★★★★★
()
Ответ на: комментарий от r3lgar

задача у него простая - скипнуть первое двоеточие и заменить все остальные

ananas ★★★★★
()
Ответ на: комментарий от r3lgar

Задача-то какая?

Наверно, имеете в виду, для чего оно мне? Есть список URL для блокировки, который надо залить на Cisco. Cisco второе двоеточие не принимает, т.к. для неё это разделитель. Если руками экранировать, то она его нормально обрабатывает. Проблема в том, что список обновляется каждый день, и добавлять по одной строке на каждый случай появления двоеточия геморройно, поэтому интересуюсь возможным способом полной автоматизации.

ARTIsshoque
() автор топика
Ответ на: комментарий от ARTIsshoque

Тогда выше уже решение кинули, мне нечего добавить.

To ananas: кто ж знал, что ТСу не для веба? (= А для веба надо конвертировать в человеконепонятную чушь, которой я даже названия не знаю.

r3lgar ★★★★★
()
Ответ на: комментарий от ananas

sed -r 's/:/\\:/2g' filename

Да, это то, что нужно. Большое спасибо.

ARTIsshoque
() автор топика
Ответ на: комментарий от r3lgar

а даже и для веба, какая разница? что на \: заменять, что на %3a - все равно

ananas ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.