sed

Bash Sed -esimerkkejä

Bash Sed -esimerkkejä
Bashin avulla voit korvata kuvion käyttämällä muuttuvaa laajennusta, kuten ($ var / pattern / korvaava). Ja niin, sed sed kuin tämä (sed-e / malli / korvaava / '). Siellä on kuitenkin muutakin kuin tekstitiedostojen mallien korvaaminen.  Täällä löydämme sedin uudelleen esimerkiksi vastaavilla komennoilla ja työnkulkuilla päivittäisten tehtävien helpottamiseksi.

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

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

  1. Hakee tiedoston rivien lukumäärän, L
  2. Luo satunnaisluvun välillä 1 ja L, R
  3. 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)

35

Esimerkkikäyttö (2)

käpristää https: // linuxhint.fi / bash_cut_command / --silent | nauhatunnisteet | jotkut linjat

Katso 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 50

Tuotos

50

Okei. Näyttää hyvältä, mutta kokeillaan jotain, joka näyttää hieman vähemmän triviaalilta.

Komennot

julista -xf sanat
julista -xf print-line
seq 1 10 $ (sanat | wc -l) | xargs -i bash -c "sanat | painorivi "

Tuotos

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

  1. löytö
  2. grep
  3. 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.

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

Kuitenkin, kun vasemman käden komento putki on läsnä, voimme jättää vihjeen pois seuraavasti.

kissan tiedosto | lajitella -R | pää -1

Nä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.

Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...