У меня есть несколько файлов JSon, которые выглядят как образец ниже:Заменитель значения JSON с пространством, используя СЕПГ и регулярное выражение
#sample json
{"urlCurrent":"https://www.website1.com/inside/377/388/408/8002.html?utm_source=source&utm_medium=Click&utm_campaign=123","id":"00001"}
{"urlCurrent":"https://127.0.0.1/inside/414/756/765/34984.html","id":"00002"}
{"urlCurrent":"https://msdn.anything.com/en-us","id":"00002"}
{"urlCurrent":"https://web.something.com/","id":"00002"}
Я хотел бы JSON стать:
#result json
{"urlCurrent":"https://www.website1.com/","id":"00001"}
{"urlCurrent":"https://127.0.0.1/","id":"00002"}
{"urlCurrent":"https://msdn.anything.com/","id":"00002"}
{"urlCurrent":"https://web.something.com/","id":"00002"}
Я думаю, что с
sed -i 's/{regular expression}/\ /g' sample.json
, который должен заменить что-либо после пробела, результат может быть достигнут. Однако я не знаю, как использовать регулярное выражение для соответствия шаблону, который мне нужен. Я также не знаю, какое ключевое слово я должен искать, чтобы достичь этого.
Есть ли способ обрезать urlCurrent, чтобы стать результатом, который мне нужен? Спасибо заранее!
12/23 Обновление Это работает:
sed -E -i -r 's!(http|ftp|https)://([0-9a-zA-Z\.]+)([0-9a-zA-Z\/\.?#=_&%~+-]+)!\2!g' sample.json
СЭД: 1: «s /(.*:\/\/?[^\/]+\/)? [^ ... ": \ 1 не определено в RE –
Спасибо за ответ! Однако это не сработало. Я все еще работаю над этим, и я отредактировал свой вопрос, как только выясню это. –
Что касается этого (зависит от реализации _sed_): 'sed -i -E '/ (. *: \/\ /? [^ \/\"] + \ /?) [^ \ "] * (. *)/\ 1 \ 2/'sample.json' – stan