Seadistamine sed -näidete jaoks
Siin on kiirjuhend näite seadistamiseks, mida ma püüan mitte üle pingutada.
sõnadon tekstifail, mis sisaldab numbreid 1 kuni 100. Kui te pole selle loomise käsus kindel, vaadake jaotise Bash Export Command jaotist xargide eksportimise funktsioon. Kunagi ei tea, et see võib ilmneda järgmisel shelliskriptimise intervjuul.
baaron tekstifail, mis sisaldab ühte rida -.
vana-phpon tekstifail, mis sisaldab vana PHP ridu, mis katkevad php7 -s või hiljem. (Vihje: ereg)
Pange tähele, et kõik ülalkirjeldatud funktsioonid leiate allpool seadistamisfunktsioonide lõpu Endnote kohta.
Sed näited samaväärsete käskudega
Käsurea keskkonnas leiate, et antud ülesandele on rohkem kui üks lahendus. Enamasti tahad siiski minna teed, mis tekitab kõige vähem vastupanu. Siin on nimekiri sed -käskudest koos vastavate samaväärsete käskudega, millest mõningaid käsitletakse allpool üksikasjalikult.
1. Printige juhuslik rida (vastab sortimisele -R -| pea -1)
sed -n '$ ((RANDOM % 100)) p '-2. Printige faili viimane rida (võrdub peaga -1 -)
sed -n '$ p'-3. Printige faili esimesed 10 rida (samaväärne peaga -n 10 -)
sed '10q'-4. Printige faili esimene rida (samaväärne sabaga -1 -)
sed -n '1p'-5. Kustutage kõik tähemärgi eksemplarid (samaväärne tr –delete ’0’, kus 0 on märk, mille soovime kustutada)
sed -Ja 's / 0 // g'-6. Teisenda csv -fail tsv -ks (samaväärne tr ',' ' t' -)
sed -Ja 's/,/ t/g'-7. Lisa rida faili (samaväärne kassiribaga)
sed '$ a ---'-8. Lisa rida faili (samaväärne kassiribaga)
sed '1i ---'-9. Printige kõik failis olevad read välja (samaväärne kassiga)
sed -n -Ja 'p'-10. Printige mustrile vastavad read (samaväärne grep -e ’^1’ -)
sed -n -Ja '/^1/ p'-11. Kustutage mustrile vastavad read (samaväärne grep -v -e ’^1’ -)
sed -Ja '/^1/ d'-12. Hankige failis ridade arv (samaväärne wc -l -)
sed -n -Ja '$ ='-13. Kirjutage taustal olevasse faili (samaväärne käsk tee)
sed 'sisse{1} dollarit'-Näide tee käsu rakendamiseks sed
Otse ülal on näide, mille taustal on kiri faili. See kõlab nagu tee käsk. No on küll. Siin käsitleme seda, kuidas rakendada funktsiooni, mis asendab tee bash -is sed abil.
Käsud
tee (){
test $ {#} -ekv 1 || tagasi;
sed 'sisse{1} dollarit'-
}
peamine()
teesee;
kassseda
peamine
Väljund
12
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
Siin näete kahte täisarvude loendit vahemikus 1 kuni 10. Esimene on käsk seq. Teise saame teelt kirjutatud faili kassilt. Ma tean, et see on naeruväärne, kuid see töötab!
Näide failist juhusliku rea printimiseks sed -i abil
Oletame, et tahame printida juhusliku rea failist, kasutades bashi ja natuke sed. Kas saame hakkama? Jah me saame! Siin on, kuidas.
Rakendage funktsiooni, mis
- Saab failis ridade arvu, L
- Loob juhusliku arvu vahemikus 1 kuni L, R
- Prindib R.
Funktsioon eeldab, et sisend suunatakse väljastpoolt.
Käsud
mingi rida(){
funktsioonilc()
{
sed -n -Ja '$ ='-
};
funktsioonitrükiliin()
{
sed -n -Ja '{1} dollaritp '-
};
temp= $( mktemp );
kass-> $ {temp};
kass $ {temp} |print-line $((RANDOM%$( kass $ {temp} |lc)+1 ));
rm $ {temp}
}
Kasutamise näide (1)
järg 100 |_Väljund (1)
35Kasutamise näide (2)
curl https://linuxhint.com/käsk bash_cut_command/ -vaikne |ribad|mingi ridaVaadake allolevat näidet, kasutades sed -i HTML -siltide eemaldamiseks. Pange tähele, et ülemäärane näide annab tühjade ridade puhul mõnikord tühja. Harjutusena saab seda parandada.
Sed kasutamine failis ridade printimiseks
Oletame, et soovite rakendada funktsiooni bash, et printida failist välja antud rida. Faili ühe rea printimine bash-, pea-, saba- või awk -tsüklit kasutades on failis ridade välja printimiseks liiga palju tööd. Hea, et meil on sed. Saadud funktsioon sed abil oleks järgmine.
Käsud
trükiliin(){
sed -n '{1} dollaritp '-
}
Vaatame nüüd, mis juhtub, kui kasutame sõnadele printimisjoont.
Käsud
sõnad|trükiliinviiskümmendVäljund
viiskümmendOkei. Tundub hea, kuid proovime midagi, mis tundub veidi vähem triviaalne.
Käsud
kuulutama -xfsõnadkuulutama -xftrükiliin
järg 1 10$(sõnad| tualett -neid ) | xargs-minalööma -c 'sõnad | print-line {} '
Väljund
1üksteist
kakskümmend üks
31
41
51
61
71
81
91
Okei. Nüüd on see rohkem selline! Näete, kuidas sed -i saab bash -skriptis kasutada faili mis tahes rea välja printimiseks.
Sed näited ilma samaväärsete käskudeta
Käsurea keskkonnas on mõnikord tee vähem lahendust tekitava lahenduseni sed-tee; vastasel korral teete lõpuks rohkem tööd kui vaja. Mõned käsud võivad olla esitatud allpool.
Juhtige kõiki shelliskripti ridu
sed -Ja 's/^/#/'-Kustutage esimene rida
sed -Ja '1d'-
Kustutaviimanerida
sed -Ja '$ d'-
Sisestage joon mustri vastavate ridade ette
sed '/0 $/i ---'-
Sisestage rida mustrile vastavate ridade järele
sed ' / 0 $ / ---'-
Eemaldage html -sildid
sed -Ja 's /†*.// g'-
Uuenda eregsissekäivitamiseks vana php -koodsissephp7 või uuem
sed 's/ereg ( ([^,]*). ([^)]*) ./ strpos ( 2, 1)/g'
Kontrollimakui sedon varasem kui teatud versioon
sed -Ja 'v 4.5'-
Näide sed versioonist, mis hargneb bashis
Näidete kohal on rida kontrollimiseks, kas sed on varasem kui teatud versioon, mille abil saame rakendada versiooni hargnemist bash -is, mis on minu arvates lihtsam kui rakendada funktsiooni, et võrrelda sed -versiooni väljundi versiooninumbreid . Ainus lõks on see, et kui on olemas varasem sedaversioon, mis v -käsku ei toeta, oleme hädas.
Käsud
test-sed-versioon-kõige rohkem() {viskas välja -n | sed 'v{1} dollarit'-2> /arendaja/null
}
prooviversioon()
{
viskas välja -n 'Versioon{1} dollarit. Okei. Tee seda ';
test-sed-versioon-kõige rohkem{1} dollarit && {
viskas välja -n 'vana';
tõsi
} || {
viskas välja -n 'uus'
};
viskas välja ' tee.'
}
peamine()
{
kohalikv;
eestvsisse 4.{4,5};
teha
prooviversioon$ {v};
tehtud
}
peamine
Väljund
Versioon4.4. Okei. Tehke seda vanaviisi.Versioon4.5. Okei. Tehke seda uuel viisil.
Pange tähele, et minu masinal töötav sed -versioon nende märkide sisestamise ajal on 4.4, mis selgitaks ülaltoodud väljundit. Samuti oli samal ajal gnu sedi uusim versioon 4.7, umbes 3 aastat vanem kui mul. Minu sed on vana! Tegelikult lisati versioonis 4.0.6 parameeter käsklusele versioon, nii et see strateegia töötab iga nimetatud vähemalt v4.0.6 puhul, mis on leebe, arvestades, et see versioon ilmus 2003. aasta alguses.
Tegin täiendavaid kaevamisi, tegelikult lugesin NEWS -i uusimast lähtekoodist. Versioonil 4.6 on uus funktsioon - silumine, mis tühjendab skripti ja märgib väljundliinid. See võimaldaks teil tõlkida bas -funktsioonide genereeritud sed -skriptid kanoonilisse vormi. Lahe! Lihtsalt ärge unustage, et teil on vaja seda versiooni, mis hargneb bashis. Seal tuleb see sed näide mängu.
Näide bash -funktsioonist, mis kasutab HTML -i siltide eemaldamiseks sed
Ülaltoodud näidetes on rida HTML -siltide eemaldamiseks. Viskame selle bash -funktsiooni ja kasutame seda kõigi HTML -siltide eemaldamiseks viimasest minu kirjutatud artiklist.
Käsud
ribad(){
sed -Ja 's /†*.// g'-
}
curl https://linuxhint.com/käsk bash_cut_command/ -vaikne |ribad
Ma ei saa öelda, et see on täiuslik, kuid vähemalt on see terminalis loetav.
Sed näited töövoogudega: Näide töövoost: asendage kõik turvaliselt, kasutades Find, grep ja sed
Võib kindlalt väita, et muudatused, mis on tehtud sed -valiku -i abil, on pöördumatud. See tähendab, et kui te pole täiesti kindel, millist teksti soovite asendada, saate tõenäoliselt ühe märgi vähem, kui ette nähtud. Sellepärast kasutame selles näites töövoos sed, et asendada turvaliselt kõigi valitud failide tekst.
Töövoog
- leida
- haaret
- sed
leida
Siin saate valida failid, mida tuleb asendada. Soovitan kasutada järgmist käsku:
leida -tüüpf-nimi | haaret -v-Ja| xargs-mina ...Näiteks võite piirata failide asendamist PHP -failidega, välja arvatud git -hoidla kataloogid, järgmiselt.
leida -tüüpf-nimi*.php| haaret -v -Ja '.go' | xargs -mina...Lugege lähemalt käsust xargs bash -is.
haaret
Järgmisena proovime järgida valitud failides mõnda_mustrit. Pange tähele, et kuna me kasutame grepi jaoks valikut -o, kuvatakse väljundis ainult sobivat stringi, kui see on olemas.
leida -tüüpf-nimi*.php| haaret -v -Ja '.go' |xargs -mina haaret -Jamingi_muster-või
Ülaltoodud käsk peaks tagastama stringide loendi, mis vastab mõnele_mustrile.
sed
Lõpuks tahame asendada kõik stringid, mis vastavad mõnele mustrile. Selleks peame grep teisendama sediks järgmiselt.
leida -tüüpf-nimi*.php| haaret -v -Ja '.go' |xargs -mina sed -mina -Jas/mingi_muster/asendamine/g
Käsk grep muutub sed -i ja valik -o eemaldatakse. Ja seal on see olemas.
Nüüd saate õnne katsetamise asemel eelnevalt kontrollida, milliseid nööre sedas asendatakse.
Näidetes kasutatud valikute lõppmärkused
Siin on lühidalt käsitletud sed näidetes kasutatud valikute loend.
Valik | Kirjeldus |
-mina | Muutke oma kohale. Kui sisendiks on fail (pole ühendatud), kirjutab avaldiste tulemus faili sisu üle. Sed võtab ühe vastu nt) sed -n… |
-Ja | -e tähistab väljendust. Selle parameeter on väljend sed keeles. Sed aktsepteerib paljusid nt) sed -e'expr1 '-e'expr2'
|
-n | Peidab rea, mida avaldis ei mõjuta. See tähendab, et kui avaldis on sed -keeles trükitud avaldus, siis trükiväljaandes sisalduvaid ridu väljundisse ei kaasata. nt) sed -n…
|
Lisateavet saadaolevate sed -valikute kohta vt sed -help
Lõppmärkmed näidetes kasutatavate samaväärsete käskude kohta
Järgmised käsurea utiliidid on kaasatud näidetesse koos samaväärsete käskudega.
- sorteerima
- pea
- saba
- haaret
- kass
- NS
- tee
Lõppmärkuse lõpus - näiteks samaväärsed käsud
Kui te ei tea, mis näites toimub - see märkus on teie jaoks. Lisasin näidete enamiku käskude järel tähemärgi, mis vihjab, et eeldame, et sisend võetakse vastu toru kaudu. See on,
kassmõni fail| sorteerima -R-| pea -1Kui aga toru vasakpoolne käsk on olemas, võime vihje välja jätta järgmiselt.
kassmõni fail| sorteerima -R | pea -1Nii juhtus näidetes - märgi järel käskudega.
Funktsioonide lõppmärkused seadistamiseks
Kui otsite, siis siin on ülaltoodud näidete seadistamise funktsioonid. Deklaratsiooni -f abil saadud väljund. Lisateabe saamiseks lugege lisateavet käsu deklareerida kohta bash.
Käsud
sõnad(){
järg 100
}
baar()
{
viskas välja ---
}
vana-php()
{
viskas välja 'ereg ($ UA,' Bottybot ')'
}
Alumine joon
Mulle meeldis kirjutada Bash sed näiteid ja kogusin isegi paar lisatrikki. Sed on võimas käsurea utiliit ja väljendusrikas keel tekstifailidega manipuleerimiseks. Kui teile meeldis sedast õppida, ärge muretsege, puudutada on veel palju. Istu edasi.