Vytahnuti URL z 6MB textoveho souboru
Ahoj, potreboval bych vytahnout asi 100 URL ze (pro me:) zmateneho 6MB velkeho souboru. Ta URL, ktera potrebuji vytahnout vypadaji presne takhle: {"entries":[{"url":"asdf.html". Myslim, ze presne tahle situace by mohla byt v nejakych programatorskych tutorialech, takze pokud nejaky takovy znate, tak mi prosim dejte odkaz. Ikdyz jsem programovani videl jenom z rychliku, tak tohle bych mozna zvladnul s trochou usili. Pokud by nekdo byl tak hodny a dal mi rovnou zdrojovy kod, treba v javascriptu, php nebo klidne v necem jinem tak bych se taky nezlobil
posli subor sem
Diky za ochotu, ale nemuzu to poslat, protoze v tom 6MB velkem souboru z firefoxiho profilu je urcite hafo osobnich dat. Spis bych te poprosil, jestli bys sem nedal ten kod/skript a ja bych se s tim uz nejak popral
Těžko ti pošle program na něco, když ani nevím jakou to něco má strukturu. A těžko to udělá, když si nemá kde to ověřit. Návody na programování jsou všude na netu.
Ten soubor je sessionstore.js.
Skript, ktery potrebuju by se dal popsat takhle:
1/Najdi v souboru sessionstore.js tento text: {"entries":[{"url":
2/Uloz URL, ktere za timto textem v uvozovkach nasleduje na novy radek do souboru asdf.txt
(3/)Neukladej zadne URL, kteremu ten text z bodu 1/ nepredchazi
http://www.gfi.com/blog/windows-powershell-extract ing-strings-using-regular-expressions/
a celkem to i funguje
$input_path = '.\example.txt'
$regex = '([a-zA-Z]{3,})://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)*?'
Select-String -Path $input_path -Pattern $regex -AllMatches |%{$_.matches} |%{$_.value}
www.adresa.cz
www.adresab.de
.. bude to chtít upravit REGEX aby to vzalo kompletní URL .. a ne jen domenu :)
Edit:
$regex = "(http|ftp|https):\/\/([\w\-_]+(?:(?:\.[\w\-_]+)+) )([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#] )?" by mělo stačit
Diky, zkusim se s tim poprat.
Tak uz to mam. Pouzil jsem tenhle regex: $regex = "(\{`"entries`":\[\{`"url`":`"https?://(.*?)`".`") "
Jeste pro pripad, ze by se to nekomu pozdeji nekomu hodilo, tak jsem pouzil tutorialy na tehle strance: www.regular-expressions.info
máš 2 možnosti:
-pravděpodobně jde o soubor JSON a ty data jsou hiaerchicky strukturovaná. takže je stačí projít nějakým filtrem (něco jako xpath pro xml) nebo cyklem v nouzi
- nebo regulerní výrazem, je to uplně trivivální (až na vymyšlení správného regexu). příkaz:
grep -ioP '(?<=url":")[^"]+(?=")' soubor