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
Na tohle existují i programy.
urlextractor
Diky, snad s tim pujde vytahnout jenom ty odkazy, kterym predchazi {"entries":[{"url":, protoze jsou tam i tisice jinych odkazu.
Tak ten program je bohuzel pro MAC, zkusim najit neco podobneho.
Tos mu udělal schválně, žejo, Karle
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
o ktory subor presne sa jedna? (nazov & pripona?) Trebars na FF existuju konvertory.
Alebo nadrb to predsa do profilu a daj si vo FF vyexportovat zalozky do html? Ak sa jedna o zalozky.
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