2016-01-17 4 views
0

У меня есть этот код:SED с переменной migth содержать «/»

echo $content | grep -o '<a href="[a-z]\+[^>"]*' | sed -ne 's/^<a href="\(.*\)/\1/p' | sed -ne 's~/^http[s]*:\/\/*\(.*\)/\1/p' | sed -ne "s;/\([^/]*\)\/\(.*\)/$1:::$2:::\1:::\2/;p" 

Если вы посмотрите на последнюю SED команды, вы можете увидеть переменную $ 2.

И переменная $ 2 может содержать «/» «вперед-вниз», и это, очевидно, вызовет проблемы.

Как я могу избежать этой проблемы?

ответ

3

Простые, изменить СЕПГ разделители ..

sed -ne "s~\([^/]*\)\/\(.*\)~$1:::$2:::\1:::\2~p" 

Ваши последние две SED команды должны быть,

sed -ne 's~^http[s]*:\/\/*\(.*\)~\1~p' | sed -ne "s;\([^/]*\)\/\(.*\);$1:::$2:::\1:::\2;p" 
+0

или 'СЭД -ne«s; \ ([^ /] * \) \/\ (. * \); $ 1 ::: $ 2 ::: \ 1 ::: \ 2; p "' –

+0

Протестировано и не работает, я получаю эту ошибку: команда unterminated 's ' – Jozo

+0

опубликовать полную трассировку на ваш вопрос –