У меня есть журнал dbpedia, полный URL. Некоторые из них не отформатированы, но у некоторых есть некоторое форматирование, которое приводит к бесчисленному плюс символы. пример:
529e0532100c7d6f2b6ba4c093ff9581 - - [03/Jan/2014 00:00:00 +0100] "GET /sparql/?callback=a&default-graph-uri=http%3A%2F%2Fdbpedia.org&query=PREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E+++++PREFIX+dbo%3A+%3Chttp%3A%2F%2Fdbpedia.org%2Fontology%2F%3E+++++++++++++++SELECT+%3Fpic%2C+%3Fabstract+WHERE+%7B+++++++++++++++++++++++++++%7B++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%3Fs+rdfs%3Alabel+%22%D0%A0%D0%B2%D0%BE%D1%82%D0%B0%22%40ru+.++++++++++++++++++++++++++%7B++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%3Fs+dbo%3Athumbnail+%3Fpic++%3B++++++++++++++++++++++++++++++++++++dbo%3Aabstract++%3Fabstract+++++++++++++++++++++++++++%7D++++++++++++++++++++++++++++++++++++++++++++++++++++++++UNION++++++++++++++++++++++++++++++++++++++++++++++++++++%7B++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%3Fs+dbo%3AwikiPageDisambiguates+%3FactualResource+.+++++++++++%3FactualResource+rdfs%3Alabel++++%3FredirectsTo+%3B+++++++++++++++++++++++++++++dbo%3Athumbnail+%3Fpic+++++++++%3B+++++++++++++++++++++++++++++dbo%3Aabstract++%3Fabstract++++++++++++++++++FILTER(lang(%3FredirectsTo)+%3D+%22ru%22)++++++++++++++++%7D++++++++++++++++++++++++++++++++++++++++++++++++++++++++UNION++++++++++++++++++++++++++++++++++++++++++++++++++++%7B++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%3Fs+dbo%3AwikiPageRedirects+%3FactualResource+.+++++++++++++++%3FactualResource+rdfs%3Alabel++++%3FredirectsTo+%3B+++++++++++++++++++++++++++++dbo%3Athumbnail+%3Fpic+++++++++%3B+++++++++++++++++++++++++++++dbo%3Aabstract++%3Fabstract++++++++++++++++++FILTER(lang(%3FredirectsTo)+%3D+%22ru%22)++++++++++++++++%7D++++++++++++++++++++++++++++++++++++++++++++++++++++%7D++++++++++++++++++++++++++++++++++++++++++++++++++++++++FILTER+(lang(%3Fabstract)+%3D+%22ru%22)++++++++++++++++++++++%7D+LIMIT+1+++++++++++++++++++++++++++++++++++++++++++++++&format=application%2Fjson&timeout=30000&debug=on&_=1388699454908 HTTP/1.0" 200 6845 "http://www.slovohvat.ru/g/g8FbJ" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1150.1 Iron/20.0.1150.1 Safari/536.11";
Я хотел бы уменьшить несколько плюс символы только к одному. Я несколько знаком с sed
и подстановочные знаки, но в этом случае мне было бы нужно + - подстановочный знак для символа +
. Как я могу достигнуть этого?
В синтаксисе основного регулярного выражения (BRE) +
рассматривается буквально, и получить особое значение один или несколько его нужно оставить:
sed 's/+\+/+/g'
С другой стороны, в синтаксисе расширенного регулярного выражения (ERE), +
квантор по умолчанию, и \+
восстановления буквальное значение:
sed -E 's/\++/+/g'
можно избежать некоторого беспорядка при помощи квантора POSIX \{1,\}
(BRE) или {1,}
(ДО):
sed 's/+\{1,\}/+/g'
sed -E 's/\+{1,}/+/g'