Sed példák beállítása
Íme egy gyors útmutató a példa beállításához, amelyet megpróbálok nem túlzásba vinni.
szavakegy szöveges fájl, amely 1 -től 100 -ig terjedő számokat tartalmaz. Ha nem biztos abban, hogy milyen parancsot szeretne létrehozni, olvassa el a Bash Export Command xargs exportálása funkcióját. Soha nem tudhatod, hogy ez a következő shell script interjún lesz.
rúdegy szöveges fájl, amely egyetlen sort tartalmaz -.
old-phpegy szövegfájl, amely régi PHP sorokat tartalmaz, amelyek megszakadnak a php7 vagy újabb verziójában. (Tipp: ereg)
Ne feledje, hogy az összes fent leírt funkció megtalálható a Beállítási funkciókról szóló Endnote alatt.
Sed példák egyenértékű parancsokkal
Parancssori környezetben azt találja, hogy egy adott feladatra több megoldás is létezik. Azonban többnyire azt az utat akarja járni, amely a legkisebb ellenállást eredményezi. Az alábbiakban felsoroljuk a sed parancsok példáit a megfelelő megfelelő parancsokkal, amelyek közül néhányat az alábbiakban részletesen ismertetünk.
1. Nyomtasson egy véletlenszerű sort (egyenértékű a -R -| fej -1 rendezéssel)
sed -n '$ ((Véletlenszerű % 100)) p '-2. Nyomtassa ki a fájl utolsó sorát (egyenértékű a -1 fejjel -)
sed -n '$ p'-3. Nyomtassa ki az első 10 sort egy fájlban (egyenértékű a -n 10 fejjel)
sed '10q'-4. Nyomtassa ki az első sort egy fájlban (egyenértékű a -1 -es farokkal -)
sed -n '1p'-5. Törölje az összes karakterpéldányt (egyenértékű a tr –delete ’0’ értékkel, ahol 0 a törölni kívánt karakter)
sed -És 's / 0 // g'-6. Konvertálja a csv fájlt tsv -re (egyenértékű a tr ',' ' t' -)
sed -És 's/,/ t/g'-7. Sor hozzáadása a fájlhoz (megfelel a macskasávnak -)
sed '$ a ---'-8. Sor előtagja a fájlhoz (egyenértékű a macskasávval)
sed '1i ---'-9. Nyomtassa ki az összes sort a fájlban (megfelel a macskának -)
sed -n -És 'p'-10. Nyomtasson a mintának megfelelő sorokat (egyenlő a grep -e ’^1’ -értékkel)
sed -n -És '/^1/ p'-11. Törölje a mintának megfelelő sorokat (egyenlő grep -v -e ’^1’ -)
sed -És '/^1/ d'-12. Szerezze meg a fájl sorainak számát (egyenértékű a wc -l -)
sed -n -És '$ ='-13. Írjon egy fájlba a háttérben (egyenértékű tee parancs)
sed 'ban ben{1} USD'-Példa a sed használatára a tee parancs végrehajtásához
Közvetlenül fent van egy példa a Fájlba írás címkével a háttérben. Valahogy úgy hangzik, mint a tee parancs. Hát igen. Itt részletesen kifejtjük, hogyan valósíthatunk meg egy funkciót a bas bash -ban a sed használatával.
Parancsok
póló (){
teszt $ {#} -eq 1 || Visszatérés;
sed 'ban ben{1} USD'-
}
fő-()
pólóez;
macskaez
fő-
Kimenet
12
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
Itt láthatja az 1 és 10 közötti egész számok két listáját. Az első a seq parancsból származik. A másodikat a pólóban írt fájl macskájától kapjuk. Tudom, hogy nevetséges, de működik!
Példa a sed használatával véletlenszerű sor kinyomtatására a fájlban
Tegyük fel, hogy egy véletlenszerű sort szeretnénk kinyomtatni egy fájlban bash és egy kis sed használatával. Meg tudjuk csinálni? Igen! Itt van, hogyan.
Olyan funkciót valósítson meg, amely
- Lekéri a fájl sorainak számát, L
- Véletlen számot generál 1 és L között, R
- Nyomtat R.
A függvény elvárja, hogy a bemenet kívülről legyen vezetékes.
Parancsok
néhány sor(){
funkciólc()
{
sed -n -És '$ ='-
};
funkciónyomtatási vonal()
{
sed -n -És '{1} USDp '-
};
hőmérséklet= $( mktemp );
macska-> $ {temp};
macska $ {temp} |print-line $((VÉLETLEN%$( macska $ {temp} |lc)+1 ));
rm $ {temp}
}
Példahasználat (1)
sor 100 |_Kimenet (1)
35Példahasználat (2)
curl https://linuxhint.com/bash_cut_command/ --csendes |szalagcímkék|néhány sorLásd az alábbi példát, a sed használatával a HTML -címkék eltávolításához. Ne feledje, hogy a túl példa néha üresen tér vissza üres sorok esetén. Gyakorlatként javítható.
A sed használata sorok nyomtatására a fájlban
Tegyük fel, hogy egy függvényt szeretne végrehajtani bash -ban egy adott sor kinyomtatásához a fájlban. Ha egyetlen sort szeretne kinyomtatni egy fájlban bash, head, tail vagy awk ciklus használatával, túl sok munka a fájlban lévő sorok kinyomtatásához. Még jó, hogy megvan. A kapott függvény a sed használatával a következő lenne.
Parancsok
nyomtatási vonal(){
sed -n '{1} USDp '-
}
Most nézzük meg, mi történik, ha nyomtatási sort használunk a szavakon.
Parancsok
szavak|nyomtatási vonalötvenKimenet
ötvenOké. Jól néz ki, de próbáljunk ki valamit, ami egy kicsit kevésbé triviálisnak tűnik.
Parancsok
kijelent -xfszavakkijelent -xfnyomtatási vonal
sor 1 10$(szavak| WC -az ) | xargs-énbash -c 'szavak | print-line {} '
Kimenet
1tizenegy
huszonegy
31
41
51
61
71
81
91
Oké. Most ez inkább hasonlít! Látja, hogy a sed hogyan használható egy bash szkriptben a fájl bármely sorának kinyomtatására.
Sed példák egyenértékű parancsok nélkül
Parancssori környezetben néha a legkisebb ellenállást eredményező megoldáshoz vezető út a sed mód; ellenkező esetben a kelleténél több munkát végez. Az alábbiakban néhány parancs szerepelhet.
Parancsoljon minden sort egy shell parancsfájlban
sed -És 's/^/#/'-Törölje az első sort
sed -És '1d'-
Törölutolsóvonal
sed -És '$ d'-
Szúrjon be egy sort a mintához tartozó sorok elé
sed '/0 $/i ---'-
Szúrjon be egy sort a mintának megfelelő sorok után
sed ' / 0 $ / ---'-
Húzza ki a html címkéket
sed -És 's /†*.// g'-
Frissítés eregban benrégi php kód futtatásáhozban benphp7 vagy újabb
sed 's/ereg ( ([^,]*). ([^)]*) ./ strpos ( 2, 1)/g'
Jelölje beha sedkorábbi, mint egy bizonyos verzió
sed -És 'v 4.5'-
Példa a bas verzióban elágazó sed verzióra
A példák fölött található egy sor arra, hogy ellenőrizze, hogy a sed korábbi -e, mint egy bizonyos verzió, amellyel végrehajthatjuk a bash verzióban történő elágazást, ami szerintem egyszerűbb, mint egy olyan függvény megvalósítása, amely összehasonlítja a sed számokat a sed –version kimenetről . Ez az egyetlen buktató, hogy ha van egy korábbi verziója a sednek, amely nem támogatja a v parancsot, akkor bajban vagyunk.
Parancsok
teszt-sed-verzió-legfeljebb() {kidobta -n | sed 'v{1} USD'-2> /dev/nulla
}
próbaverzió()
{
kidobta -n 'Változat{1} USD. Oké. Csináld meg ';
teszt-sed-verzió-legfeljebb{1} USD && {
kidobta -n 'régi';
igaz
} || {
kidobta -n 'új'
};
kidobta 'módon'.
}
fő-()
{
helyiv;
számáravban ben 4.{4,5};
tedd
próbaverzió$ {v};
Kész
}
fő-
Kimenet
Változat4.4. Oké. Csináld a régi módon.Változat4.5. Oké. Csináld új módon.
Ne feledje, hogy a gépen futó sed verzió ezen karakterek beírása után 4.4 -es, ami megmagyarázza a fenti kimenetet. Ezenkívül a gnu sed legújabb verziója 4.7 volt, körülbelül 3 évvel idősebb, mint én. A sedem régi! Valójában a sed 4.0.6 -ban egy paramétert adtak hozzá a verzióparancshoz, így ez a stratégia bármelyik legalább v4.0.6 verziónál működik, ami engedékeny, tekintve, hogy a verzió 2003 elején jelent meg.
Némi extra ásást végeztem, valójában a NEWS kiolvastam a legújabb forráskódból. A 4.6 -os verzió új funkcióval rendelkezik - a hibakeresés, amely letörli a szkriptet és megjegyzi a kimeneti sorokat. Ez lehetővé teszi, hogy a bash függvények által generált sed parancsfájlokat lefordítsa kanonikus formába. Menő! Csak ne felejtse el, hogy szüksége van a sed verzióra, amely elágazik a bash -ban. Ez az a hely, ahol ez a példamutató szó esik.
Példa bash függvényre a sed használatával a HTML -címkék eltávolításához
A fenti példákban egy sor található a HTML -címkék eltávolításához. Dobjuk ezt egy bash függvénybe, és használjuk fel az utolsó HTML -címkék eltávolítására az utolsó cikkből, amit írtam.
Parancsok
szalagcímkék(){
sed -És 's /†*.// g'-
}
curl https://linuxhint.com/bash_cut_command/ --csendes |szalagcímkék
Nem mondhatom, hogy tökéletes, de legalább olvasható a terminálon.
Sed példák munkafolyamatokkal: Példa munkafolyamat: biztonságosan cserélje ki az összeset a find, grep és sed használatával
Nyugodtan mondhatjuk, hogy a sed használatával a -i opcióval végrehajtott változtatások visszafordíthatatlanok. Hacsak nem teljesen biztos abban, hogy melyik szöveget kell kicserélni, akkor valószínűleg a tervezettnél eggyel kevesebb karaktert kap. Éppen ezért ebben a példában a sedet használjuk egy munkafolyamatban, hogy biztonságosan lecseréljük a szöveget az összes kiválasztott fájlban.
Munkafolyamat
- megtalálja
- markolat
- sed
megtalálja
Itt kiválaszthatja a cserélni kívánt fájlokat. Azt javaslom, hogy használjon egy parancsot a következő sorokban:
megtalálja -típusf-név | markolat -v-És| xargs-én ...Például korlátozhatja a fájlokat a PHP fájlok cseréjére, kivéve a git lerakatkönyvtárakat az alábbiak szerint.
megtalálja -típusf-név*.php| markolat -v -És '.megy' | xargs -én...Olvassa el a bash xargs parancsát.
markolat
Ezután megpróbáljuk egyeztetni some_pattern fájlokat az alábbiak szerint. Ne feledje, hogy mivel a -o opciót használjuk a grep számára, a kimenet csak akkor jeleníti meg a megfelelő karakterláncot, ha van ilyen.
megtalálja -típusf-név*.php| markolat -v -És '.megy' |xargs -én markolat -Ésvalami_minta-vagy
A fenti parancsnak vissza kell adnia a some_patternnek megfelelő karakterláncok listáját.
sed
Végül le akarjuk cserélni az összes string -t, amely megfelel néhány_mintának. Ehhez a grep -et sed -re kell alakítanunk az alábbiak szerint.
megtalálja -típusf-név*.php| markolat -v -És '.megy' |xargs -én sed -én -Éss/valami_minta/csere/g
A grep parancs sed -i lesz, és a -o opció eltávolításra kerül. És ott van.
Most ellenőrizheti, hogy milyen karakterláncokat fognak kicserélni a sed -ben, ahelyett, hogy tesztelné a szerencséjét.
Végjegyzetek a példákban használt opciókhoz
Itt található a röviden tárgyalt sed példákban használt lehetőségek listája.
választási lehetőség | Leírás |
-én | Szerkessze a helyén. Ha a bemenet egy fájl (nincs bekötve), akkor a kifejezések eredménye felülírja a fájl tartalmát. Sed egyet elfogad pl) sed -n… |
-És | -e a kifejezést jelenti. Paramétere a sed nyelvű kifejezés. Sed sokakat elfogad pl) sed -e'expr1 '-e'expr2'
|
-n | Elrejti a kifejezés által nem érintett sort. Ez azt jelenti, hogy ha a kifejezés egy nyomtatott utasítás a sed nyelven, akkor a nyomtatott utasításban nem szereplő sorok nem fognak szerepelni a kimenetben. pl) sed -n…
|
A rendelkezésre álló sed lehetőségekről bővebben a sed –help
Záró megjegyzések a példákban használt egyenértékű parancsokról
A következő parancssori segédprogramok szerepelnek a sed példákban egyenértékű parancsokkal.
- fajta
- fej
- farok
- markolat
- macska
- NS
- póló
Befejezés a zárójelben - például ekvivalens parancsok
Ha kíváncsi, mi történik a példában szereplő karakterrel, ez a megjegyzés az Ön számára. Hozzáadtam egy - karaktert a legtöbb parancs után a példákban, jelezve, hogy a bemenet csövön keresztül történő fogadását várjuk. Vagyis
macskanéhány fájl| fajta -R-| fej -1Ha azonban a cső bal oldalán lévő parancs megjelenik, a következőképpen kihagyhatjuk a tippet.
macskanéhány fájl| fajta -R | fej -1Ez történt a példákban a - karakter parancsokkal.
Befejező megjegyzések a beállítási funkciókhoz
Ha keres, itt vannak a fenti példák beállításának funkciói. A deklaráció -f használatával kapott kimenet. Olvasson többet a deklarálás parancsról a bash -ban a további használathoz.
Parancsok
szavak(){
sor 100
}
rúd()
{
kidobta ---
}
old-php()
{
kidobta 'ereg ($ UA,' Bottybot ')'
}
A lényeg
Élveztem a Bash sed példák írását, és még néhány extra trükköt is összeszedtem. A Sed erőteljes parancssori segédprogram és kifejező nyelv a szöveges fájlok kezelésére. Ha szeretett tanulni a sedről, ne aggódjon, még sok minden van még. Sed tovább.