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
12
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
- Saab faili ridade arvu, L
- Genereerib juhusliku arvu vahemikus 1 kuni L, R
- 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)
35Kasutamise näide (2)
lokkima https: // linuxhint.com / bash_cut_command / --silent | ribasildid | mingi ridaVaadake 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 50Väljund
50Okei. Tundub hea, kuid proovime midagi, mis tundub natuke vähem triviaalne.
Käsud
deklareerige -xf sõnaddeklareeri -xf print-line
järgnev 1 10 $ (sõnad | wc -l) | xargs -i bash -c "sõnad | trükirida "
Väljund
111
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
- leidma
- grep
- 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.
- sorteerida
- pea
- saba
- grep
- kass
- Tr
- tee
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 -1Kui aga vasakul käel on toru olemas, võime vihje järgmiselt välja jätta.
kass mõni fail | sort -R | pea -1Nii 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.