Bash script - útfærsla á curl niðurhali útfrá textaskjali ?

Skjámynd

Höfundur
snaeji
Tölvutryllir
Póstar: 614
Skráði sig: Fös 05. Mar 2010 01:39
Reputation: 27
Staða: Ótengdur

Bash script - útfærsla á curl niðurhali útfrá textaskjali ?

Pósturaf snaeji » Mán 17. Nóv 2014 00:34

Sælir strákar.

Ég hef verið að reyna læra eitthvað á bash/unix og ákvað að reyna búa til script til þess að hlaða niður eftir slóðum í textaskjali.

Síðan sem ég valdi heitir Piazza og með hjálp Link clipper sem er Chrome addon þá fæ ég skjal sem inniheldur linka sem redirecta á file

Gefum skjalinu nafnið piazza.txt og það lítur svona út:

https://piazza.com/class_profile/get_re ... 16m5i2a1e1
https://piazza.com/class_profile/get_re ... 16m5i2a1e1
....
....

Til þess að hlaða niður file:
curl -L "SLÓÐ" >> "nafnafile.pdf"


Til þess að sækja nafnið á file:
curl -v "SLÓÐ" | cut -d'?' -f1 | cut -d'/' -f7

Nú þarf ég að búa til eitthvað script sem nær í slóðina í textaskjali, keyrir sækja nafn skipunina.
Keyrir síðan hlaða niður skipunina með nafnið á filenum sem output. Og endur tekur ferlið síðan fyrir næstu línu.

Það næsta sem ég hef komist er að fá forritið til þess að ná í öll gögnin og skila þeim í einn file. En þar sem þetta er pdf þá virkar ekki >> til þess að búa bara til eitt stórt pdf skjal. Myndi annars virka fínt ef þetta væri .txt en það væri allveg ásættanleg niðurstaða. En þetta gerði ég allavegana þessari hérna skipun:

cat piazza.txt | awk '{print "curl -L " "\"" $1 "\""}' | bash >> gogn.pdf

Eftir keyrslu þá endar gogn.pdf sem seinasta skjal sem hlóðst niður.

Ég er algjör nýgræðingur í þessu svo ég gæti verið í einhverri algjörri vitleysu og ekki viss um að awk sé endilega rétta skipunin í þessa vinnslu.

En endilega vísið mér rétta átt með þetta!


/EDIT -

Get hlaðið niður öllum gögnunum með þessari skipun og gefið þeim heiti frá 1-(fjöldi):
cat piazza.txt | awk '{print "curl -L " "\"" $1 "\" " ">" NR }' | bash

En er enþá ekki viss hvernig ég næ að skipta út NR og setja í staðinn curl -v "SLÓÐ" | cut -d'?' -f1 | cut -d'/' -f7



Skjámynd

dori
Besserwisser
Póstar: 3606
Skráði sig: Fim 12. Feb 2009 10:46
Reputation: 142
Staða: Ótengdur

Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal

Pósturaf dori » Mán 17. Nóv 2014 02:14

Ég veit ekki, hvað með að lúppa þessu txt skjali og vinna svo með hverja línu fyrir sig. Þá geturðu gert margt með sömu breytu. Annars er pottþétt hægt að gera þetta með awk en ég kann of lítið á það.

Kóði: Velja allt

for path in $(cat piazza.txt)
do
    filename=$(curl -I $path | grep Location | awk '{ print $2 }' | cut -d'?' -f1 | cut -d'/' -f7)
    curl -L $path > $filename
done


Þetta sækir fyrst nafnið sem þú vilt vista þetta sem og sækir það svo.



Skjámynd

Höfundur
snaeji
Tölvutryllir
Póstar: 614
Skráði sig: Fös 05. Mar 2010 01:39
Reputation: 27
Staða: Ótengdur

Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal

Pósturaf snaeji » Mán 17. Nóv 2014 03:25

Ahhh þetta er sniðug útfærsla og þrælvirkar hjá þér takk!

En já það er greinilega eina vitið að nota lykkjur í þetta. Næst á dagskrá kynna sér syntax fyrir lykkur :D



Skjámynd

dori
Besserwisser
Póstar: 3606
Skráði sig: Fim 12. Feb 2009 10:46
Reputation: 142
Staða: Ótengdur

Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal

Pósturaf dori » Mán 17. Nóv 2014 09:51

Ég er nýhættur að þurfa að leita að því hvernig það er. Þarf ennþá að prófa og mistakast (50/50) ef ég er að gera þetta í einni línu (for i in {1..10}; do echo $i; done). Man aldrei hvoru megin við "do" semikomman á að vera.

Það er samt mjög gaman að nota bash, hægt að gera alls konar með því þó svo að það sé náttúrulega miklu auðveldara að fara inní perl eða python ef maður þarf að gera eitthvað flókið (sérstaklega til lengdar til að hafa auðveldara viðhald).



Skjámynd

Höfundur
snaeji
Tölvutryllir
Póstar: 614
Skráði sig: Fös 05. Mar 2010 01:39
Reputation: 27
Staða: Ótengdur

Re: Bash script - útfærsla á curl niðurhali útfrá textaskjal

Pósturaf snaeji » Mán 17. Nóv 2014 23:14

Allveg sammála. Það sem kemur manni síðan mest á óvart eru endalausir möguleikarnir og viðbætur með homebrew og fleiru.
Er einnig að læra java og https://projecteuler.net/ hefur haldið manni gangandi með skemmtilegum verkefnum.