sed

Bash Sed näited

Bash Sed näited
Bash võimaldab teil mustri välja vahetada, kasutades muutuvat laiendust, näiteks ($ var / muster / asendus). Ja kas sed sedasi meeldib (sed-e / muster / asendus / '). Kuid sedas on rohkem kui mustrite asendamine tekstifailides.  Siin avastame sed uuesti, näiteks samaväärsete käskude ja töövoogudega, mis aitavad igapäevaseid ülesandeid täita.

Seadistage sed-näited

Siin on kiire juhend näite seadistamiseks, mida ma püüan mitte liiga üle pingutada.

“Sõnad” on tekstifail, mis sisaldab numbreid 1 kuni 100. Kui te pole kindel, kas käsk selle loomiseks on, lugege jaotise Bash Export Command jaotise xargs eksportimise funktsiooni. Kunagi ei tea, et see võib olla teie järgmisel shelliskriptimise intervjuul.

“Riba” on ühte rida sisaldav tekstifail -.

“Old-php” on tekstifail, mis sisaldab vana PHP ridu, mis puruneb php7 või uuemas versioonis. (Vihje: ereg)

Pange tähele, et kõik ülalkirjeldatud funktsioonid leiate allpool seadistamise funktsioonide lõpumärkusest.

Sed näited samaväärsete käskudega

Käsurea keskkonnas leiate, et antud ülesandel on rohkem kui üks lahendus. Kuid enamasti soovite minna seda teed, mis tekitab kõige vähem vastupanu. Siin on loetelu sed-käskude näidetest koos vastavate samaväärsete käskudega, kus mõnda neist käsitletakse üksikasjalikumalt allpool.

1. Juhusliku rea printimine (võrdne sortimisega -R - | head -1)

sed -n "$ ((RANDOM% 100)) p" -

2.Printige faili viimane rida (võrdne peaga -1 -)

sed -n '$ p' -

3. Printige faili esimesed 10 rida (võrdne peaga -n 10 -)

sed '10q' -

4. Printige faili esimene rida (vastab sabale -1 -)

sed -n '1p' -

5. Kustutage kõik märgi eksemplarid (vastab tr -delete '0' -, kus 0 on märk, mille soovime kustutada)

sed-e 's / 0 // g' -

6. CSV-faili teisendamine tsv-ks (vastab tr ', "\ t' -)

sed -e 's /, / \ t / g' -

7.Lisa faili rida (vastab kassiribale -)

sed '$ a ---' -

8. Esitage faili rida (vastab kassaribale)

sed '1i ---' -

9. Printige kõik failis olevad read (samaväärne kassiga)

sed -n -e 'p' -

10. Mustrile vastavate joonte printimine (vastab grep -e '^ 1' -)

sed -n -e '/ ^ 1 / p' -

11. Kustutage mustrile vastavad read (vastab grep -v -e '^ 1' -)

sed -e '/ ^ 1 / d' -

12. Hangi faili ridade arv (võrdne wc -l -)

sed -n -e '$ =' -

13. Kirjutage taustal olevale failile (samaväärne käsk tee)

sed "w $ 1" -

Näide tee kasutamise käsu rakendamiseks sed

Otse üleval on taustal näide sildiga Faili kirjutamine. Omamoodi kõlab nagu tee käsk. Noh, on küll. Siinkohal laiendame, kuidas rakendada funktsiooni tee asendamiseks bashis, kasutades sed.

Käsud

tee ()

test $ # -eq 1 || tagasi;
sed "w $ 1" -

peamine ()

järgnev 10 | tee kümme;
kass kümme

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äsust seq. Teise saame tees kirjutatud faili kassilt. Ma tean, et see on naeruväärne, kuid töötab!

Näide faili juhusliku rea printimiseks sed-i kasutamisest

Oletame, et me tahame faili juhusliku rea välja printida, kasutades bashi ja natuke sed-i. Kas me saame hakkama? Jah me saame! Siit saate teada.

Rakendage funktsioon, mis

  1. Saab faili ridade arvu, L
  2. Genereerib juhusliku arvu vahemikus 1 kuni L, R
  3. Prindib R

Funktsioon eeldab, et sisend juhitakse väljastpoolt.

Käsud

mõni rida ()

funktsioon lc ()

sed -n -e '$ =' -
;
funktsioon prindirida ()

sed -n -e "$ 1 p" -
;
temp = $ (mktemp);
kass -> $ temp;
kass $ temp | trükirida $ ((RANDOM% $ (kass $ temp | lc) + 1));
rm $ temp

Kasutamise näide (1)

järgnev 100 | _

Väljund (1)

35

Kasutamise näide (2)

lokkima https: // linuxhint.com / bash_cut_command / --silent | ribasildid | mingi rida

Vaadake allolevat näidet, kasutades HTML-siltide eemaldamiseks sed-i. Pange tähele, et üle toodud näide tagastab tühjade ridade puhul mõnikord tühja. Harjutusena saab seda parandada.

Sed-i kasutamine faili ridade printimiseks

Oletame, et soovite rakendada funktsiooni bashis, et failis antud rida välja printida. Ühe rea failis printimine silmusega bash, head, tail või awk abil on failide ridade printimiseks liiga palju tööd. Hea, et meil on sed. Saadud funktsioon sed kasutamisel oleks järgmine.

Käsud

trükirida ()

sed -n "$ 1 p" -

Vaatame nüüd, mis juhtub, kui kasutame sõnadele printimisjoont.

Käsud

sõnad | prindirida 50

Väljund

50

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

Käsud

deklareerige -xf sõnad
deklareeri -xf print-line
järgnev 1 10 $ (sõnad | wc -l) | xargs -i bash -c "sõnad | trükirida "

Väljund

1
11
21
31
41
51
61
71
81
91

Okei. Nüüd on see rohkem sarnane! Näete, kuidas sed-i saab kasutada bashi skriptis faili mis tahes rea printimiseks.

Sed näited ilma samaväärsete käskudeta

Käsurea keskkonnas on mõnikord viis kõige vähem vastupanu pakkuva lahenduseni sed viis; muidu jõuate lõpuks teha rohkem tööd kui vaja. Mõni käsk võib olla toodud allpool.

Käskige kõik read shelliskriptis

sed -e 's / ^ / # /' -
Kustuta esimene rida
sed -e '1d' -
Kustuta viimane rida
sed -e '$ d' -
Enne mustrile vastavaid ridu lisage rida
sed '/ 0 $ / i ---' -
Lisage joon pärast mustrile vastavaid jooni
sed '/ 0 $ / ---' -
Ribad HTML-sildid välja
sed-s /<[^>] *.// g ' -
Uuendage vanas PHP-koodis olevat eregi, et see töötaks PHP7-s või uuemas versioonis
sed 's / ereg (\ ([^,] * \).\ ([^)] * \)./ strpos (\ 2, \ 1) / g '
Kontrollige, kas sed on teatud versioonist varasem
sed -e 'v 4.5 ' -

Näide sed versioonist, mis hargneb bashis

Näidete kohal on rida kontrollimaks, kas sed on varasem kui teatud versioon, mida saame kasutada versiooni hargnemise juurutamiseks bashis, mis on minu arvates lihtsam kui funktsiooni proovimine versioonide numbrite võrdlemiseks sed-versiooni väljundist. See ainus lõks on see, et kui on olemas sedi varasem versioon, mis ei toeta käsku v, siis oleme hädas.

Käsud

test-sed-versioon-at-most ()
kaja -n | sed "v $ 1" - 2> / dev / null

prooviversioon ()

echo -n "Versioon $ 1. Okei. Tehke seda;
test-sed-versioon-at-most $ 1 &&
kaja -n "vana";
tõsi
||
kaja -n "uus"
;
kaja "viis."

peamine ()

kohalik v;
v jaoks 4-s.4,5;
tegema
prooviversioon $ v;
tehtud

peamine

Väljund

Versioon 4.4. Okei. Tehke seda vanaviisi.
Versioon 4.5. Okei. Tehke seda uut moodi.

Pange tähele, et minu masinas töötava sedi versioon nende tähemärkide sisestamise hetkest on 4.4, mis selgitaks ülaltoodud väljundit. Samuti oli gnu sedi uusim versioon 4.7, umbes 3 aastat vanem kui mul. Minu sed on vana! Tegelikult sed 4-s.0.6, lisati versiooni käsule parameeter, nii et see strateegia töötab kõigi nimetatud v4 puhul.0.6, mis on leebe, arvestades, et versioon ilmus 2003. aasta alguses. Sa oled hea.

Tegin mõned täiendavad kaevamised, tegelikult UUDISED, lugedes uusimat lähtekoodi. Versioon 4.6-l on uus funktsioon -debug, mis tühistab skripti ja märgib väljundirid. See võimaldaks teil tõlkida bashi funktsioonide loodud sed skriptid kanoonilisse vormi. Lahe! Lihtsalt ärge unustage, et vajate sed versiooni hargnemist bash. Seal tulebki see sed näide mängu.

Näide bash-funktsioonist, kasutades HTML-siltide eemaldamiseks sed-i

Ülalolevates näidetes on rida HTML-siltide eemaldamiseks. Viskame selle bashi funktsiooni ja kasutame seda kõigi minu kirjutatud HTML-i siltide eemaldamiseks.

Käsud

ribasildid ()

sed-s /<[^>] *.// g ' -

lokkima https: // linuxhint.com / bash_cut_command / --silent | ribasildid

Ma ei saa öelda, et see oleks ideaalne, kuid vähemalt on terminalis loetav.

Näited töövoogudega: Näidetöövoog: asenda kõik ohutult, kasutades leidmist, grepimist ja sedi

Võib kindlalt öelda, et sed-i abil -i-ga tehtud muudatused on pöördumatud. See tähendab, et kui te pole täiesti kindel, milline tekst asendatakse, võib teil tõenäoliselt olla üks tähemärki vähem kui ette nähtud. Sellepärast kasutame selles näites sed-i töövoos teksti ohutuks asendamiseks kõigis teie valitud failides.

Töövoog

  1. leidma
  2. grep
  3. sed
leidma

Siin saate valida failid, mis asendatakse. Soovitan kasutada käsku järgmiselt:

leia -tüüp f -nimi | grep -v -e | xargs -i ..

Näiteks võite piirata failide asendamist PHP-failidega, välja arvatud git-hoidla kataloogid järgmiselt.

find -type f -nimi \ *.php | grep -v -e '.git '| xargs -i ..

Lisateavet xhargi käsust bashis.

grep

Järgmisena proovime järgida valitud failides mõnda_mudelit. Pange tähele, et kuna me kasutame grepi jaoks -o-valikut, kuvatakse väljundis sobitatud string ainult siis, kui seda on.

find -type f -nimi \ *.php | grep -v -e '.git '|
xargs -i grep -e mõni_muster -o

Ülaltoodud käsk peaks tagastama stringi loendi, mis vastab mingile mustrile.

sed

Lõpuks soovime asendada kõik stringid, mis vastavad mingile_mustrile. Selleks peame grep teisendama sediks järgmiselt.

find -type f -nimi \ *.php | grep -v -e '.git '|
xargs -i sed -i -e s / mõni_muster / asendus / g

Grep-käsk muutub sed -i-ks ja valik -o eemaldatakse. Ja seal see teil on.

Nüüd saate oma õnne proovimise asemel kontrollida, millised stringid asendatakse sedis.

Näidetes kasutatud valikute lõpumärkused

Siin on lühidalt arutatud näidetes kasutatud valikute loetelu.

Variant Kirjeldus
-i Muuda paigas. Kui sisendiks on fail (ei sisestata), kirjutab avaldiste tulemus faili sisu üle.

Sed aktsepteerib ühte

nt) sed -n…

-e -e tähistab väljendit. Selle parameeter on väljend sed keeles.

Sed aktsepteerib paljusid

nt) sed -e 'expr1' -e 'expr2' ..

-n Peidab joont, mida väljend ei mõjuta. See tähendab, et kui avaldis on sed-keeles trükiavaldus, siis ei lisata väljundisse ridu, mida trükiväljaandes pole.

nt) sed -n…

Saadavate sed-valikute kohta leiate lisateavet sed-abist

Näidetes kasutatakse samaväärsete käskude lõpumärkusi

Järgmised käsurea utiliidid on samaväärsete käskudega sed-näidetes.

Lõpumärkus lõpul - näiteks samaväärsed käsud

Juhul, kui mõtlete, mis näites tegelasega toimub, on see märkus teie jaoks. Lisasin näidetes enamiku käskude järel tähe, mis vihjab, et eeldame, et sisend võetakse vastu toru kaudu. See on,

kass mõni fail | sort -R - | pea -1

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

kass mõni fail | sort -R | pea -1

Nii toimis näidetes käskudega - märk pärast.

Lõpumärkused seadistamise funktsioonide kohta

Kui otsite, on siin ülaltoodud näidete seadistamise funktsioonid. Deklareeri -f abil saadud väljund. Lisateabe saamiseks lugege käskdeklaratsiooni bash'is.

Käsud

sõnad ()

järgnev 100

baar ()

kaja ---

vana-php ()

kaja 'ereg ($ UA, "Bottybot")'

Alumine joon

Mulle meeldis kirjutada Bash sed näiteid ja korjasin isegi mõned lisanipid. Sed on võimas käsurea utiliit ja ekspressiivne keel tekstifailidega manipuleerimiseks. Kui teile meeldis sedi kohta õppida, ärge muretsege, et veel on palju puudutamata. Sedas edasi.

Viis parimat mängu püüdmise kaarti
Me kõik oleme YouTube'is voogesituse mänge näinud ja armastanud. PewDiePie, Jakesepticye ja Markiplier on vaid mõned tipptasemel mängijatest, kes on t...
Kuidas mängu Linuxis arendada
Kümme aastat tagasi ei osanud paljud Linuxi kasutajad ennustada, et nende lemmikoperatsioonisüsteem on ühel päeval populaarne kommertsvideomängude män...
Kommertsmängumootorite avatud lähtekoodiga sadamad
Tasuta, avatud lähtekoodiga ja platvormidevaheliste mängumootorite puhkusereise saab kasutada nii vanade kui ka mõnede üsna hiljutiste mängude pealkir...