Bash Sedi näited

Bash Sed Examples



Bash võimaldab teil mustrit asendada, kasutades muutuvat laiendust, näiteks ($ {var/pattern/substitution). Ja nii, kas sed sedasorti (sed -e ‘s/muster/asendus/’). Sedatada saab aga muud kui tekstifailides mustrite asendamist. Siin avastame näite abil uuesti sed, samaväärsete käskude ja töövoogudega, mis aitavad igapäevaseid ülesandeid täita.

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

1
2
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

  1. Saab failis ridade arvu, L
  2. Loob juhusliku arvu vahemikus 1 kuni L, R
  3. 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)

35

Kasutamise näide (2)

curl https://linuxhint.com/käsk bash_cut_command/ -vaikne |ribad|mingi rida

Vaadake 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ümmend

Väljund

viiskümmend

Okei. Tundub hea, kuid proovime midagi, mis tundub veidi vähem triviaalne.

Käsud

kuulutama -xfsõnad
kuulutama -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

  1. leida
  2. haaret
  3. 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 -1

Kui aga toru vasakpoolne käsk on olemas, võime vihje välja jätta järgmiselt.

kassmõni fail| sorteerima -R | pea -1

Nii 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.