Asennus sed-esimerkkejä varten
Tässä on pikaopas esimerkin asettamiseksi, jota yritän olla tekemättä liikaa.
"Sanat" on tekstitiedosto, joka sisältää numerot 1 - 100. Jos et ole varma komennosta sen luomiseksi, katso Bash Export Command -kohdan ohjeaihe xargs: n vientitoiminto. Et koskaan tiedä, että se voi olla seuraavassa komentojonojen haastattelussa.
”Palkki” on tekstitiedosto, joka sisältää yhden rivin -.
“Old-php” on tekstitiedosto, joka sisältää vanhan PHP: n rivejä, jotka hajoavat php7: ssä tai uudemmassa. (Vihje: ereg)
Huomaa, että kaikki yllä kuvatut toiminnot löytyvät alla Endnote on setup -toiminnoista.
Sed esimerkkejä vastaavilla komennoilla
Komentoriviympäristössä löydät enemmän kuin yhden ratkaisun tiettyyn tehtävään. Suurimmaksi osaksi haluat kuitenkin mennä polulle, joka tuottaa vähiten vastustusta. Tässä on luettelo esimerkkejä sed-komennoista vastaavilla vastaavilla komennoilla, joista joitain käsitellään yksityiskohtaisesti alla.
1. Tulosta satunnainen viiva (vastaa lajittelua -R - | head -1)
sed -n "$ ((RANDOM% 100)) p" -2.Tulosta tiedoston viimeinen rivi (vastaa päätä -1 -)
sed -n '$ p' -3. Tulosta tiedoston 10 ensimmäistä riviä (vastaa otsikkoa -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' -, missä 0 on poistettava merkki)
sed-e 's / 0 // g' -6. Muunna csv-tiedosto tsv: ksi (vastaa tr ', "\ t' -)
sed-e 's /, / \ t / g' -7.Liitä rivi tiedostoon (vastaa kissapalkkia -)
sed '$ a ---' -8. Lisää rivi tiedostoon (vastaa kissa - palkkia)
sed '1i ---' -9. Tulosta kaikki tiedostossa olevat rivit (vastaa kissaa)
sed -n -e 'p' -10. Tulosta viivaa vastaava viiva (vastaa grep -e '^ 1' -)
sed -n -e '/ ^ 1 / p' -11. Poista kuviota vastaavat rivit (vastaa grep -v -e '^ 1' -)
sed -e '/ ^ 1 / d' -12. Hanki tiedoston rivien määrä (vastaa wc -l -)
sed -n -e '$ =' -13. Kirjoita tiedostoon taustalla (vastaava komentotee)
sed "w $ 1" -Esimerkki sedin käyttämisestä tee-komennon toteuttamiseen
Aivan yläpuolella on esimerkki, jonka nimi on Kirjoita tiedostoon taustalla. Tavallaan kuulostaa tee-komennolta. No, se on. Täällä laajennamme kuinka toteuttaa funktio korvata tee in bash käyttämällä sed.
Komennot
tee ()testi $ # -eq 1 || palata;
sed "w $ 1" -
main ()
jakso 10 | tee kymmenen;
kissa kymmenen
tärkein
Tuotos
12
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
Täällä näet kaksi luetteloa kokonaisluvuista 1-10. Ensimmäinen on seq-komennosta. Toinen saamme teestä kirjoitetun tiedoston kissasta. Tiedän, että se on naurettavaa, mutta se toimii!
Esimerkki sedin käyttämisestä satunnaisen rivin tulostamiseen tiedostossa
Oletetaan, että haluamme tulostaa satunnaisen rivin tiedostoon käyttäen bashia ja hieman sedia. Voimmeko tehdä sen? Kyllä me voimme! Näin.
Toteuta toiminto, joka
- Hakee tiedoston rivien lukumäärän, L
- Luo satunnaisluvun välillä 1 ja L, R
- Tulostaa R
Toiminto odottaa tulon johtavan ulkopuolelta.
Komennot
jokin rivi ()toiminto lc ()
sed -n -e '$ =' -
;
toiminto tulostusrivi ()
sed -n -e "$ 1 p" -
;
lämpötila = $ (mktemp);
kissa -> $ temp;
kissa $ temp | painolinja $ ((RANDOM% $ (kissa $ temp | lc) + 1));
rm $ temp
Esimerkkikäyttö (1)
sek 100 | _Lähtö (1)
35Esimerkkikäyttö (2)
käpristää https: // linuxhint.fi / bash_cut_command / --silent | nauhatunnisteet | jotkut linjatKatso alla oleva esimerkki käyttämällä sed-koodia HTML-tagien poistamiseen. Huomaa, että yli-esimerkki palauttaa joskus tyhjän rivin. Harjoituksena sitä voidaan parantaa.
Tulostamalla viivoja tiedostossa sedin avulla
Oletetaan, että haluat toteuttaa funktion bashissa tietyn rivin tulostamiseksi tiedostossa. Yritetään tulostaa yksi rivi tiedostoon silmukalla bash, pää, häntä tai awk on liikaa työtä tiedostojen viivojen tulostamiseksi. Hyvä asia, että meillä on sed. Tuloksena oleva toiminto sedin avulla olisi seuraava.
Komennot
painolinja ()sed -n "$ 1 p" -
Katsotaan nyt, mitä tapahtuu, kun käytämme sanoja tulostusrivillä.
Komennot
sanat | painolinja 50Tuotos
50Okei. Näyttää hyvältä, mutta kokeillaan jotain, joka näyttää hieman vähemmän triviaalilta.
Komennot
julista -xf sanatjulista -xf print-line
seq 1 10 $ (sanat | wc -l) | xargs -i bash -c "sanat | painorivi "
Tuotos
111
21
31
41
51
61
71
81
91
Okei. Nyt se on enemmän kuin se! Näet kuinka sedia 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 vastustusta, on sed-tapa; muuten päädyt tekemään enemmän työtä kuin vaaditaan. Jotkut komennot voivat olla alla.
Komento kaikki rivit komentosarjassa
sed -e 's / ^ / # /' -Poista ensimmäinen rivi
sed-e '1d' -
Poista viimeinen rivi
sed -e '$ d' -
Lisää rivi ennen kuin linjat vastaavat kuviota
sed '/ 0 $ / i ---' -
Lisää viiva kuviota vastaavien viivojen jälkeen
sed '/ 0 $ / ---' -
Poista HTML-tunnisteet
sed-e /<[^>] *.// g ' -
Päivitä vanhan php-koodin ereg, jotta se voidaan suorittaa php7: ssä tai uudemmassa
sed 's / ereg (\ ([^,] * \).\ ([^)] * \)./ strpos (\ 2, \ 1) / g '
Tarkista, onko sed aikaisempi kuin tietty versio
sed -e 'v 4.5 ' -
Esimerkki sed-versiosta, joka haarautuu bashiin
Esimerkkien yläpuolella on rivi tarkistaaksesi, onko sed aikaisempi kuin tietty versio, jota voimme käyttää version haarautumisen toteuttamiseen bashissa, mikä on mielestäni helpompaa kuin yrittää toteuttaa toiminto, jolla verrataan sed-version tuotoksen versioita. Ainoa kuoppa on, että jos on olemassa aikaisempi sed-versio, joka ei tue v-komentoa, olemme vaikeuksissa.
Komennot
test-sed-version-at-most ()kaiku -n | sed "v $ 1" - 2> / dev / null
kokeile versiota ()
echo -n "Versio $ 1. Okei. Tee se ";
test-sed-version-at-most $ 1 &&
kaiku -n "vanha";
totta
||
kaiku -n "uusi"
;
kaiku "tavalla."
main ()
paikallinen v;
v: lle 4: ssä.4,5;
tehdä
kokeile versiota $ v;
tehty
tärkein
Tuotos
Versio 4.4. Okei. Tee se vanhalla tavalla.Versio 4.5. Okei. Tee se uudella tavalla.
Huomaa, että koneellani ajettava sed-versio näiden merkkien kirjoittamisesta on 4.4, mikä selittäisi yllä olevan tuotoksen. Samanaikaisesti gnu sedin uusin versio oli 4.7, noin 3 vuotta vanhempi kuin minulla. Sedani on vanha! Itse asiassa sed 4: ssä.0.Kuvion 6 versiokomentoon lisättiin parametri, joten tämä strategia toimii kaikilla mainituilla ainakin v4: llä.0.6, mikä on lempeä, kun otetaan huomioon, että versio julkaistiin vuoden 2003 alussa. Olet hyvä.
Tein jotain ylimääräistä kaivamista, itse asiassa UUTISET luki viimeisimmän lähdekoodin. Versio 4.Kuvassa 6 on uusi ominaisuus -debug, joka tyhjentää komentosarjan ja merkitsee tulosrivit. Tämän avulla voit kääntää bash-funktioiden luomat sed-komentosarjat kanoniseen muotoon. Viileä! Älä unohda, että tarvitset sed-version haarautumisen bashiin. Siellä tämä sed esimerkki tulee esiin.
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 kaikki HTML-tagit viimeisestä kirjoittamastani artikkelista.
Komennot
nauhatunnisteet ()sed-e /<[^>] *.// g ' -
käpristää https: // linuxhint.fi / bash_cut_command / --silent | nauhatunnisteet
En voi sanoa, että se on täydellinen, mutta ainakin se on luettavissa terminaalissa.
Sed-esimerkkejä työnkulkuilla: Esimerkkejä työnkulusta: korvaa kaikki turvallisesti käyttämällä find-, grep- ja sed-toimintoja
On turvallista sanoa, että sedillä -i-vaihtoehdolla tehdyt muutokset ovat peruuttamattomia. Eli jos et ole täysin varma, mikä teksti on korvattava, sinulla on todennäköisesti yksi merkki vähemmän kuin on tarkoitettu. Siksi tässä esimerkissä käytämme sedia työnkulussa korvaamaan teksti turvallisesti kaikissa valitsemissasi tiedostoissa.
Työnkulku
- löytö
- grep
- sed
löytö
Täällä valitset tiedostot, jotka vaihdetaan. Ehdotan komennon käyttämistä näiden linjojen mukaisesti:
etsi -tyyppi f -nimi | grep -v -e | xargs -i…Voit esimerkiksi rajoittaa tiedostoja korvaamaan PHP-tiedostot lukuun ottamatta git-arkistohakemistoja seuraavasti.
etsi -tyyppi f -nimi \ *.php | grep -v -e '.git '| xargs -i…Lue lisää xargs-komennosta bashissa.
grep
Seuraavaksi yritämme sovittaa jonkin_mallin seuraavissa tiedostoissa. Huomaa, että koska käytämme -ep-vaihtoehtoa grepille, tulos näyttää vastaavan merkkijonon, jos sellaista on.
etsi -tyyppi f -nimi \ *.php | grep -v -e '.git '|xargs -i grep -e jotkut_mallit -o
Yllä olevan komennon tulisi palauttaa luettelo merkkijonosta, joka vastaa jotakin_mallia.
sed
Lopuksi haluamme korvata kaikki merkkijonot, jotka vastaavat jotakin_mallia. Tätä varten meidän on muunnettava grep sediksi seuraavasti.
etsi -tyyppi f -nimi \ *.php | grep -v -e '.git '|xargs -i sed -i -e s / some_pattern / korvaava / g
Grep-komennosta tulee sed -i ja -o-vaihtoehto poistetaan. Ja siinä sinulla on se.
Nyt voit tarkistaa etukäteen, mitkä merkkijonot korvataan sedillä, sen sijaan, että testaisit onneasi.
Loppuviitteet esimerkeissä käytetyistä vaihtoehdoista
Tässä on luettelo vaihtoehdoista, joita käytetään lyhyesti käsitellyissä sed-esimerkeissä.
Vaihtoehto | Kuvaus |
-i | Muokkaa paikassa. Jos syötteenä on tiedosto (ei lähetetty sisään), lausekkeiden tulos korvaa tiedoston sisällön. Sed hyväksyy yhden esim. sed -n… |
-e | -e tarkoittaa ilmaisua. Sen parametri on lauseke sed-kielessä. Sed hyväksyy monia esim. sed -e 'expr1' -e 'expr2'…
|
-n | Piilottaa linjan, johon lauseke ei vaikuta. Eli jos lauseke on tulostuslauseke sed-kielellä, rivejä, joita ei sisälly tulostuslausekkeeseen, ei sisällytetä tulosteeseen. esim. sed -n…
|
Lisätietoja käytettävissä olevista sed-vaihtoehdoista, katso sed -help
Vastaavien komentojen loppuhuomautukset käyttävät esimerkkejä
Seuraavat komentorivin apuohjelmat sisältyvät sed-esimerkkeihin vastaavilla komennoilla.
- järjestellä
- pää
- häntä
- grep
- kissa
- Tr
- tee
Loppuviite jäljessä - esimerkiksi vastaavat komennot
Jos mietit, mitä esimerkin - merkissä tapahtuu, tämä muistiinpano on sinulle. Lisäsin a - merkin useimpien komentojen jälkeen esimerkkeihin vihjataakseni, että odotamme syötteen vastaanottavan putken kautta. Tuo on,
kissan tiedosto | lajitella -R - | pää -1Kuitenkin, kun vasemman käden komento putki on läsnä, voimme jättää vihjeen pois seuraavasti.
kissan tiedosto | lajitella -R | pää -1Näin tapahtui esimerkeissä olevien - merkki-komentojen kanssa.
Asetusten toimintojen loppuviitteet
Jos etsit, tässä on toimintoja yllä olevien esimerkkien määritykseen. Deklaroi -f: llä saatu tulos. Lue lisää bash-laitteen deklarointikomennosta lisää käyttötarkoituksia varten.
Komennot
sanat ()sek 100
baari ()
kaiku ---
old-php ()
echo 'ereg ($ UA, "Bottybot")'
Bottom line
Nautin kirjoittaa Bash sed -esimerkkejä ja otin jopa muutamia ylimääräisiä temppuja matkan varrella. Sed on tehokas komentorivi-apuohjelma ja ilmeikäs kieli tekstitiedostojen käsittelyyn. Jos pidit sedin oppimisesta, älä huoli, on vielä paljon muuta koskematta. Sed.