Asetus sed -esimerkkeihin
Tässä on pikaopas esimerkin käyttöönottoa varten, jota yritän olla tekemättä liikaa.
sanaton tekstitiedosto, joka sisältää numerot 1 - 100. Jos et ole varma sen luomisesta, katso Bash Export Commandin Xargs -vientitoiminto. Et koskaan tiedä, että se saattaa olla seuraavassa shell -käsikirjoitushaastattelussasi.
baarion tekstitiedosto, joka sisältää yhden rivin -.
vanha phpon tekstitiedosto, joka sisältää vanhan PHP: n rivejä, jotka murtuvat php7: ssä tai uudemmassa. (Vinkki: ereg)
Huomaa, että kaikki yllä kuvatut toiminnot löytyvät alla olevasta Endnote -asetuksesta.
Sed esimerkkejä vastaavilla komennoilla
Komentoriviympäristössä huomaat, että tiettyyn tehtävään on useita ratkaisuja. Suurimmaksi osaksi haluat kuitenkin kulkea polkua, joka tuottaa vähiten vastustusta. Tässä on luettelo esimerkkeistä sed -komennoista ja vastaavista vastaavista komennoista, joista osa käsitellään yksityiskohtaisesti alla.
1. Tulosta satunnainen rivi (vastaa lajittelua -R -| pää -1)
sed -n ''$ ((RANDOM % 100))) p '-2.Tulosta tiedoston viimeinen rivi (vastaa päätä -1 -)
sed -n '$ p'-3. Tulosta tiedoston ensimmäiset 10 riviä (vastaa päätä -n 10 -)
sed '10q'-4. Tulosta tiedoston ensimmäinen rivi (vastaa häntä -1 -)
sed -n '1p'-5. Poista kaikki merkin esiintymät (vastaa tr -poista '0' -jossa 0 on merkki, jonka haluamme poistaa)
sed -Ja 's / 0 // g'-6. Muunna csv -tiedosto tsv: ksi (vastaa tr ',' ' t' -)
sed -Ja 's/,/ t/g'-7.Liitä rivi tiedostoon (vastaa kissapalkkia -)
sed '$ a ---'-8. Lisää rivi tiedostoon (vastaa kissapalkkia)
sed '1i ---'-9. Tulosta kaikki tiedoston rivit (vastaa kissaa)
sed -n -Ja 'p'-10. Tulosta kuvion mukaiset viivat (vastaa grep -e '^1' -)
sed -n -Ja '/^1/ p'-11. Poista kuvion mukaiset rivit (vastaa grep -v -e ’^1’ -)
sed -Ja '/^1/ d'-12. Hanki tiedoston rivien määrä (vastaa wc -l -)
sed -n -Ja '$ ='-13. Kirjoita tiedostoon taustalla (vastaava komento tee)
sed 'sisään{1} $''-Esimerkki sedin käyttämisestä tee -komennon toteuttamiseen
Aivan yllä on esimerkki Kirjoita tiedostoon taustalla. Kuulostaa vähän tee -komennolta. No se on. Tässä tarkennamme, kuinka toteuttaa toiminto korvata bash käyttäen sed.
Komennot
tee (){
testata $ {#} -ekv 1 || palata;
sed 'sisään{1} $''-
}
tärkein()
teeTämä;
kissaTämä
tärkein
Lähtö
12
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
Tässä näet kaksi luetteloa kokonaisluvuista 1-10. Ensimmäinen on komennosta seq. Toinen saamme t -kirjaimen tiedoston kissasta. Tiedän, että se on naurettavaa, mutta se toimii!
Esimerkki satunnaisen rivin tulostamisesta tiedoston sed avulla
Oletetaan, että haluamme tulostaa satunnaisen rivin tiedostosta käyttämällä bash -tiedostoa ja hieman sediä. Voimmeko tehdä sen? Kyllä me voimme! Tässä on ohjeet.
Toteuta toiminto, joka
- Hakee tiedoston rivien määrän, L
- Luo satunnaisluvun välillä 1 ja L, R
- Tulostaa R.
Toiminto odottaa tulon putkistuvan ulkopuolelta.
Komennot
joku linja(){
toimintolc()
{
sed -n -Ja '$ ='-
};
toimintotulostuslinja()
{
sed -n -Ja ''{1} $p '-
};
lämpötila= $( mktemp );
kissa-> $ {temp};
kissa $ {temp} |print-line $((RANDOM%$( kissa $ {temp} |lc)+1 ));
rm $ {temp}
}
Esimerkki käyttö (1)
seuraava 100 |_Lähtö (1)
35Esimerkki käyttö (2)
curl https://linuxhint.com/bash_cut_command/ --hiljainen |nauhatunnisteet|joku linjaKatso alla oleva esimerkki HTML -tunnisteiden poistamiseen sedin avulla. Huomaa, että yli -esimerkki palauttaa joskus tyhjän tyhjien rivien kohdalla. Harjoituksena sitä voi parantaa.
Sedin käyttäminen rivien tulostamiseen tiedostossa
Oletetaan, että haluat toteuttaa funktion bashissa, jotta voit tulostaa tietyn rivin tiedostosta. Yhden rivin tulostaminen tiedostoon käyttämällä bash-, head-, tail- tai awk -silmukkaa on liikaa työtä tiedoston rivien tulostamiseksi. Onneksi meillä on rauha. Tuloksena oleva funktio sedillä olisi seuraava.
Komennot
tulostuslinja(){
sed -n ''{1} $p '-
}
Katsotaan nyt mitä tapahtuu, kun käytämme print-line-sanoja.
Komennot
sanat|tulostuslinjaviisikymmentäLähtö
viisikymmentäOkei. Näyttää hyvältä, mutta kokeillaan jotain, joka näyttää hieman vähemmän triviaalilta.
Komennot
julistaa -xfsanatjulistaa -xftulostuslinja
seuraava 1 10$(sanat| WC -he ) | xargs-ilyödä -c 'sanat | print-line {} '
Lähtö
1yksitoista
kaksikymmentäyksi
31
41
51
61
71
81
91
Okei. Nyt se on enemmän sen kaltainen! Näet, kuinka sediä voidaan käyttää bash -komentosarjassa minkä tahansa tiedoston rivin tulostamiseen.
Sed esimerkkejä ilman vastaavia komentoja
Komentoriviympäristössä joskus polku ratkaisuun, joka tuottaa vähiten vastusta, on sed-tapa; muuten teet lopulta enemmän työtä kuin vaaditaan. Jotkin komennot voivat olla alla.
Komenna kaikkia komentosarjan rivejä
sed -Ja 's/^/#/'-Poista ensimmäinen rivi
sed -Ja '1d'-
Poistaakestäälinja
sed -Ja $ d-
Lisää rivi ennen kuviota vastaavia rivejä
sed '/0 $/i ---'-
Lisää rivi kuviota vastaavien rivien jälkeen
sed ' / 0 $ / ---'-
Irrota html -tunnisteet
sed -Ja 's /†*.// g'-
Päivitä eregsisäänvanha php -koodi ajettavaksisisäänphp7 tai uudempi
sed 's/ereg ( ([^,]*). ([^)]*) ./ strpos ( 2, 1)/g'
Tarkistaajos sedon aikaisempi kuin tietty versio
sed -Ja 'v 4.5'-
Esimerkki sed -versio, joka haarautuu bashissa
Esimerkkien yläpuolella on rivi, joka tarkistaa, onko sed vanhempi kuin tietty versio, jonka avulla voimme toteuttaa version haarautumisen bashissa, mikä on mielestäni helpompaa kuin yrittää toteuttaa funktio vertaamaan sed -version versiotuloksia . Ainoa sudenkuoppa on, että jos on olemassa aiempi sed -versio, joka ei tue v -komentoa, olemme pulassa.
Komennot
test-sed-version-korkeintaan() {heitti pois -n | sed 'v{1} $''-2> /dev/tyhjä
}
kokeiluversio()
{
heitti pois -n 'Versio{1} $. Okei. Tee se ';
test-sed-version-korkeintaan{1} $ && {
heitti pois -n 'vanha';
totta
} || {
heitti pois -n 'Uusi'
};
heitti pois 'tapa'.
}
tärkein()
{
paikallinenv;
vartenvsisään 4.{4,5};
tehdä
kokeiluversio$ {v};
tehty
}
tärkein
Lähtö
Versio4.4. Okei. Tee se vanhaan tapaan.Versio4.5. Okei. Tee se uudella tavalla.
Huomaa, että koneellani toimiva sed -versio näiden merkkien kirjoittamisen jälkeen on 4.4, mikä selittää yllä olevan tuloksen. Lisäksi samaan aikaan gnu sedin uusin versio oli 4,7, noin 3 vuotta vanhempi kuin minulla. Seni on vanha! Itse asiassa sed 4.0.6: ssa versiokomentoon lisättiin parametri, joten tämä strategia toimii kaikille mainituille vähintään versiolle 4.4.6, joka on lievä ottaen huomioon, että versio julkaistiin vuoden 2003 alussa. Olet hyvä.
Tein ylimääräistä kaivaa, oikeastaan NEWS -lukemista uusimmasta lähdekoodista. Versiossa 4.6 on uusi ominaisuus - virheenkorjaus, joka poistaa komentosarjan ja merkitsee tulostusrivit. Tämän avulla voit kääntää bas -funktioiden luomat sed -komentosarjat kanoniseen muotoon. Viileä! Älä vain unohda, että tarvitset sed -version, joka haarautuu bashissa. Siellä tämä sed -esimerkki tulee esille.
Esimerkki bash -toiminnosta, joka käyttää sediä HTML -tunnisteiden poistamiseen
Yllä olevissa esimerkeissä on rivi HTML -tunnisteiden poistamiseksi. Heitetään se bash -funktioon ja poistetaan sen avulla kaikki HTML -tagit viimeisestä kirjoituksestani.
Komennot
nauhatunnisteet(){
sed -Ja 's /†*.// g'-
}
curl https://linuxhint.com/bash_cut_command/ --hiljainen |nauhatunnisteet
En voi sanoa, että se on täydellinen, mutta ainakin se on luettavissa päätelaitteessa.
Sed -esimerkkejä työnkulkuista: Esimerkki työnkulusta: vaihda kaikki turvallisesti käyttämällä Find, grep ja sed
On turvallista sanoa, että sedillä -i -vaihtoehdolla tehdyt muutokset ovat peruuttamattomia. Eli jos et ole täysin varma, mikä teksti korvataan, sinulla on todennäköisesti yksi merkki vähemmän kuin on tarkoitus. Siksi tässä esimerkissä käytämme sediä työnkulussa korvaamaan tekstin turvallisesti kaikissa valitsemissasi tiedostoissa.
Työnkulku
- löytö
- pito
- sed
löytö
Täältä voit valita tiedostot, jotka on vaihdettava. Ehdotan seuraavan komennon käyttöä:
löytö -tyyppif-nimi | pito -v-Ja| xargs-minä ...Voit esimerkiksi rajoittaa tiedostoja korvaamaan PHP -tiedostot lukuun ottamatta git -arkiston hakemistoja seuraavasti.
löytö -tyyppif-nimi*.php| pito -v -Ja '.mennä' | xargs -i...Lue lisää xargs -komennosta bashissa.
pito
Seuraavaksi yritämme sovittaa jotkut_kuvio seuraavissa valituissa tiedostoissa. Huomaa, että koska käytämme -p -vaihtoehtoa grep: lle, tulostuksessa näkyy vain mahdollinen merkkijono.
löytö -tyyppif-nimi*.php| pito -v -Ja '.mennä' |xargs -i pito -Jasome_pattern-tai
Yllä olevan komennon pitäisi palauttaa merkkijono, joka vastaa jotakin_mallia.
sed
Lopuksi haluamme korvata kaikki jonon_kuvio vastaavat merkkijonot. Tätä varten meidän on muutettava grep sediksi seuraavasti.
löytö -tyyppif-nimi*.php| pito -v -Ja '.mennä' |xargs -i sed -i -Jas/some_pattern/korvaus/g
Grep -komennosta tulee sed -i ja -o -vaihtoehto poistetaan. Ja siellä sinulla on se.
Nyt voit tarkistaa etukäteen, mitkä merkkijonot korvataan sedissä sen sijaan, että testaisit onneasi.
Esimerkkivaihtoehdot esimerkeissä
Tässä on luettelo lyhyesti käsitellyissä sed -esimerkeissä käytetyistä vaihtoehdoista.
Vaihtoehto | Kuvaus |
-i | Muokkaa paikallaan. Jos tulo on tiedosto (ei syötetty), lausekkeiden tulos korvaa tiedoston sisällön. Sed hyväksyy yhden esim. sed -n… |
-Ja | -e tarkoittaa ilmaisua. Sen parametri on lauseke sed -kielellä. Sed hyväksyy monia esim. sed -e'expr1 '-e'expr2'
|
-n | Piilottaa rivin, johon lauseke ei vaikuta. Toisin sanoen jos lauseke on sed -kielellä tulostettu lauseke, tulostuslausekkeeseen kuulumattomia rivejä ei sisällytetä tulostukseen. esim. sed -n…
|
Lisätietoja saatavilla olevista sed -vaihtoehdoista on sed -help
Loppuhuomautukset vastaavista komennoista, joita käytetään esimerkeissä
Seuraavat komentorivityökalut sisältyvät sed-esimerkkeihin vastaavilla komennoilla.
- järjestellä
- pää
- häntä
- pito
- kissa
- NS
- tee
Lopussa oleva huomautus - esimerkiksi vastaavat komennot
Jos mietit, mitä esimerkissä tapahtuu - tämä huomautus on sinua varten. Lisäsin useimpien esimerkkikomentojen jälkeen -merkin vihjataksemme, että odotamme tulon vastaanottavan putken kautta. Tuo on,
kissajokin tiedosto| järjestellä -R-| pää -1Kuitenkin, kun vasemman käden komento putki on läsnä, voimme jättää vihjeen pois seuraavasti.
kissajokin tiedosto| järjestellä -R | pää -1Näin tapahtui esimerkkien komennoilla - komennon jälkeen.
Asetusten toimintojen loppuhuomautukset
Jos etsit, tässä on yllä olevien esimerkkien asennustoiminnot. Tulos, joka on saatu käyttämällä deklaraa -f. Lue lisää deklarointikomennosta bashissa, jos haluat lisää käyttötarkoituksia.
Komennot
sanat(){
seuraava 100
}
baari()
{
heitti pois ---
}
vanha php()
{
heitti pois 'ereg ($ UA,' Bottybot ')'
}
Bottom line
Nautin Bash sed -esimerkkien kirjoittamisesta ja jopa otin muutamia ylimääräisiä temppuja matkan varrella. Sed on tehokas komentorivityökalu ja ilmeikäs kieli tekstitiedostojen käsittelyyn. Jos pidit oppimisesta sedistä, älä huoli, vielä on paljon muutakin koskettavaa. Sed päälle.