2021-01-21
Regexmagi

Regex är extremt bra att kunna, det underlättar många situationer. Tyvärr har jag aldrig riktigt varit i behov av det i någon större utsträckning vilket gjort att jag aldrig satt mig in i det.

Igår skulle jag rensa bort några gamla VPSer som legat kvar med några tjänster jag inte orkat ta tag i att migrera till min nya. En av dom innehöll en gammal installation av Wallabag som jag inte visste hur jag skulle migrera över till Shaarli som jag installerade för ett tag sedan. Vad jag vet finns det inget bra sätt att migrera, inga av dom formaten som Wallabag exporterar till tas emot av Shaarli.

Det jag fick göra var att exportera alla länkar till en XML-fil, dom innehåller en massa saker utöver själva länkarna jag behöver för att lägga in i Shaarli.

Mitt första hinder var att jag behövde få ut alla rader som innehåller länkarna och dom ser ut så här:

<url><![CDATA[https://domän.tld]]></url>

Det är nu regex kommer in i bilden. För att få ut dessa rader från allt annat använde jag mig av grep

grep '<url><!\[CDATA\[https://.*]]></url>' All\ articles.xml > wallashaarli

Nu hade jag en fil med namn wallashaarli som endast innehåller dom rader med den strängen.

Nästa steg var att öppna wallashaarli i vim och med hjälp av visual block mode ta bort allt innan själva länken. Till sist så var jag tvungen att få bort allt efter själva länken, vilket jag gjorde med hjälp av

:%s/]]></url>//g

vilket ersätter ]]></url> med ingenting, dvs tar bort det.

Nu hade jag mina länkar klara för att importeras i Shaarli på bara några få minuter. Att göra detta manuellt med över 500 rader hade tagit mig många timmar.

Tack vim, tack regex och tack grep!

#regex #vim