Putkitettu tiedoston muokkaus
|
|
Knikke
Newbie
|
16. lokakuuta 2006 @ 11:25 |
Linkki tähän viestiin
|
Hei!
Olen käyttänyt linuxia verrattain vähän ja tarttisin apua putkitetun komennon tekoon. Komennon tulisi tehdä:
1. Skannata kansioita ja etsiä sieltä tiedot index.php jotka sisältää tekstin main. Skannattava syvyys on 1.
find -maxdepth 1 -name 'index.php' toi ettii muuten muttei tarkista sisältääko tekstiä.
2. Jos tiedostoja löytyy, lisätään tiedoston alkuun tai riville X rivi: -esimerkki-
T: Niko
|
Senior Member
|
16. lokakuuta 2006 @ 13:50 |
Linkki tähän viestiin
|
ihan suoraan en ny tuota komentoa voi antaa, kun pitäisi vähän testatakkin..
mutta.. jos haluat 1 riville jonkun merkkijonon, niin sitten pitää kikkailla temppitiedostoilla, esim näin:
olkoon tiedoston nimi nyt korvaa.sh
#!/bin/bash
# lisää tietyn 2. parametrinä annetun merkkijonon 1.
# parametrinä annettuun tiedostoon
# korvaa.sh <tiedostonnimi> "merkkijono"
# tarkistetaanko onko tiedostonimi sopiva
case "$1" in
"") echo "Käyttö: ${0##*/} <tiedostonimi> <merkkijono>"; exit $E_PARAM;;
-*) FILENAME=./$1;;
* ) FILENAME=$1;;
esac
#tarkistetaan onko lisättävää merkkijonoa
case "$2" in
"") echo "Käyttö: ${0##*/} <tiedostonimi> <merkkijono>"; exit $E_PARAM;;
*) STRTOADD=$2;;
esac
#pistetään merkkijono tmppitiedoston kärkeen.
echo $STRTOADD > tmp.php
#luetaan tiedosto ja laitetaan temppitiedoston loppuun
cat $FILENAME >> tmp.php
#wanaha tiedosto pois, temppiä tilalle
rm $FILENAME; mv tmp.php $FILENAME
tai sitten jos haluaa jollekkin tietylle riville aina merkinnän, niin se voisi mennä jotenkin näin..
#!/bin/bash
# lisää tietyn parametrinä 3. annettun merkkijonon,
# parametrinä 2. annetulle riville
# parametrinä 1. annettuun tiedostoon
#
# korvaa.sh <tiedostonimi> <rivinro> <merkkijono>
# tarkistetaanko onko tiedostonimi sopiva
case "$1" in
"") echo "Käyttö: ${0##*/} <tiedostonimi> <merkkijono>"; exit $E_PARAM;;
-*) FILENAME=./$1;;
* ) FILENAME=$1;;
esac
#tarkistetaan onko rivinumeroa
case "$2" in
"") echo "Käyttö: ${0##*/} <tiedostonimi> <rivinro> <merkkijono>"; exit $E_PARAM;;
*) LINE=$2;;
esac
#tarkistetaan onko lisättävää merkkijonoa
case "$3" in
"") echo "Käyttö: ${0##*/} <tiedostonimi> <merkkijono>"; exit $E_PARAM;;
*) STRTOADD=$3;;
esac
#luetaan 10 ensimmäistä riviä ja laitetaan temppitiedostoon
head -n$LINE > tmp.php
#lisätään se yksi rivi
echo $STRTOADD >> tmp.php
#luetaan loput temppitiedoston loppuun
more +$line $FILENAME >>tmp.php
#wanaha tiedosto pois, temppiä tilalle
rm $FILENAME; mv tmp.php $FILENAME
sitten se looppi on vähän kinkynmpi.. ehkä tuolla findilla olisi hyvä tehdä lista tiedostoista joita muuttaa, find blaablaa > muokattavat.txt. Sitten tuota muokattavat.txt:tä pitäisi lukea rivi kerrallaan ja käyttää jompaa kumpaa yllä mainittua scriptiä...
It seems that perfection is reached not when there is nothing left to add, but when there is nothing left to take away.
Viestiä on muokattu lähettämisen jälkeen. Viimeisin muokkaus 16. lokakuuta 2006 @ 13:51
|
Knikke
Newbie
|
17. lokakuuta 2006 @ 06:07 |
Linkki tähän viestiin
|
Kiitoksia vastauksestasi. Tuosta olisi apua jos saisin ajettua tuon luomani korvaa.sh-tiedoston. Onko tohon olemassa mitään ihan komentoriviillä ajettavaa "rimpsua" :D
|
Senior Member
|
17. lokakuuta 2006 @ 06:14 |
Linkki tähän viestiin
|
chmod u+x korvaa.sh
./korvaa.sh
うさぎ => Kubuntu 10.04 64b + W7Pro64 # EliteBook 8540w # Ci7 620M # 4GB # QFX 880M # 7k500 500GB
きつね => WXP32 # PIIX4 910e # 4GB # RHD 6870 # 500GB
くま => Linux/XBMC 64b # Zotac MAG HD-ND01 # N330 # 2GB # GF 9400M/ION
とら => Ubuntu Server 8.04 LTS 64b # Jetway NC62K-LF # AX2 4850e @1,7GHz/0,9V # 2GB # F1 4x1TB
|
Knikke
Newbie
|
17. lokakuuta 2006 @ 06:23 |
Linkki tähän viestiin
|
Chmod korjasi tuon että voin ajaa sen... Kiitos!
Seuraava ongelma on kun lisättävä teksti sisältää merkin $ eli esim:
./korvaa.sh index.php "if ($HTTP_POST_VARS['id'] != ''"
Ideoita?
|
Knikke
Newbie
|
17. lokakuuta 2006 @ 06:26 |
Linkki tähän viestiin
|
Tämä onnistuikin kun muutti "-merkit -> '-merkiksi ja päinvastoin :D
|
Knikke
Newbie
|
17. lokakuuta 2006 @ 06:42 |
Linkki tähän viestiin
|
Eli eli... komentoon:
find -maxdepth 2 -name 'index.php' tarttis nyt yhdistää toi korvaa.sh... Ihan putkittamalla se ei onnistu.. (en osaa :D)
Pystyyköhän tohon korvaa.sh-tidostoon lisään cksumin tai jonkun, että se lisää vaan rivin jos cksum on tietty?
|
Knikke
Newbie
|
17. lokakuuta 2006 @ 09:26 |
Linkki tähän viestiin
|
Olen saanut muodostettua rivin joka lisää kaikkiin löytämiinsä index.php-tiedstoihin tekstiä.
find . -maxdepth 2 -name 'index.php' -size 4k -exec ./korvaa.sh {} "Testi" \;
Toi on jo oikeastaan se mitä hain. Vielä jos ton size:n tilalla ois joku cksum:n tai sum:n tarkistus...Vaikka kyllä toiki varmaan on sopiva tarkoitukseeni. Kiitoksia avusta!
|
Mainos
|
|
|
Knikke
Newbie
|
20. lokakuuta 2006 @ 09:51 |
Linkki tähän viestiin
|
Osaisko joku yhistää chksumin, sumin tai md5sumin joko tohon kyselyyn tai sit tohon korvaa.sh-tiedostoon?
|