A sed példák beállítása
Itt van egy gyors útmutató a példa beállításához, amelyet megpróbálok nem túlzottan túlzásba vinni.
A „szavak” egy szöveges fájl, amely az 1–100 számokat tartalmazza. Ha nem biztos a létrehozásának parancsában, olvassa el az xargs exportálása funkciót a Bash Export parancsban. Soha nem tudhatod, hogy ez a következő shell-szkriptelési interjúban szerepel-e.
A „bar” egy sort tartalmazó szövegfájl -.
Az „old-php” egy olyan szöveges fájl, amely a régi PHP sorait tartalmazza, amelyek betörnek a php7 vagy újabb verzióiba. (Tipp: ereg)
Ne feledje, hogy az összes fent leírt funkció megtalálható az alábbiakban: A telepítéshez szükséges funkciók végjegyzete.
Sed példák egyenértékű parancsokkal
A parancssori környezetben egynél több megoldás létezik egy adott feladatra. Azonban többnyire a legkevesebb ellenállást kiváltó utat akarja megtenni. Az alábbiakban felsoroljuk a sed parancsok példáit a megfelelő ekvivalens parancsokkal, amelyek közül néhányat alább részletesen ismertetünk.
1. Véletlenszerű vonal nyomtatása (megfelel a -R - | head -1 rendezésnek)
sed -n "$ ((RANDOM% 100)) p" -2.Nyomtassa ki az utolsó sort a fájlban (egyenértékű a -1 fejjel -)
sed -n '$ p' -3. Az első 10 sort kinyomtatja egy fájlban (egyenértékű a head -n 10 - fejlettel)
sed '10q' -4. Nyomtassa ki az első sort egy fájlban (egyenértékű a -1 farokkal -)
sed -n '1p' -5. Törölje a karakter összes példányát (egyenértékű a tr -delete '0' - val, ahol 0 a törölni kívánt karakter)
sed -e 's / 0 // g' -6. Csv fájl konvertálása tsv formátumra (egyenértékű tr ', "\ t' -)
sed -e 's /, / \ t / g' -7.Sor hozzáfűzése a fájlhoz (egyenértékű a macskasávval -)
sed '$ a ---' -8. Sor hozzáadása a fájlhoz (egyenértékű a cat-barral)
sed '1i ---' -9. Az összes sor kinyomtatása a fájlban (egyenértékű a macskával)
sed -n -e 'p' -10. Nyomtasson egy mintának megfelelő vonalakat (egyenértékű a grep -e '^ 1' -)
sed -n -e '/ ^ 1 / p' -11. A mintának megfelelő sorok törlése (egyenértékű a grep -v -e '^ 1' - karakterrel)
sed -e '/ ^ 1 / d' -12. Szerezd meg a fájlok sorainak számát (egyenértékű a wc -l - értékkel)
sed -n -e '$ =' -13. Írjon egy fájlba a háttérben (egyenértékű parancs tee)
sed "w $ 1" -Példa a sed használatára a tee parancs végrehajtásához
Rögtön fent van egy példa, amely a háttérben egy Írjon fájlba feliratú. Olyan hangok, mint a tee parancs. Nos, az. Itt kibővítjük, hogyan lehet megvalósítani egy funkciót a tee in bash cseréjére sed segítségével.
Parancsok
tee ()teszt $ # -eq 1 || Visszatérés;
sed "w $ 1" -
fő ()
10. sz póló tíz;
tízes macska
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-től 10-ig terjedő egész számok két felsorolását. Az első a seq parancsból származik. A másodikat a tee-be írt fájl macskájától kapjuk. Tudom, hogy nevetséges, de működik!
Példa a sed használatára egy véletlenszerű sor kinyomtatására egy fájlban
Tegyük fel, hogy egy véletlenszerű sort akarunk kinyomtatni egy fájlban a bash és egy kis sed használatával. Meg tudjuk csinálni? Igen! Itt van, hogyan.
Végezzen el egy olyan függvényt, amely
- Megkapja a fájl sorainak számát, L
- Véletlen számot generál 1 és L, R között
- R nyomtatja
A függvény azt várja, hogy a bemenet kívülről érkezzen.
Parancsok
néhány sor ()függvény lc ()
sed -n -e '$ =' -
;
függvény nyomtatási sor ()
sed -n -e "$ 1 p" -
;
temp = $ (mktemp);
macska -> $ temp;
macska $ temp | nyomtatási sor $ ((RANDOM% $ (cat $ temp | lc) + 1));
rm $ temp
Példa felhasználásra (1)
100. sz _Kimenet (1)
35Példa felhasználásra (2)
göndörítés https: // linuxhint.com / bash_cut_command / --silent | szalagcímkék | néhány sorosLá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 az over példa néha üreset ad vissza üres sorok esetén. Gyakorlatként javítható.
A sed használatával vonalak nyomtatása egy fájlban
Tegyük fel, hogy a bash-ban egy függvényt szeretne megvalósítani egy adott sor kinyomtatásához egy fájlban. Ha megpróbál egyetlen sort kinyomtatni egy fájlban egy hurokkal a bash, a fej, a farok vagy az awk segítségével, túl sok munka ahhoz, hogy sorokat nyomtasson ki egy fájlban. Még jó, hogy van sed. A sed alkalmazásával kapott eredmény a következő lenne.
Parancsok
nyomtatási sor ()sed -n "$ 1 p" -
Most nézzük meg, mi történik, ha nyomtatott sort használunk a szavakon.
Parancsok
szavak | nyomtatási sor 50Kimenet
50oké. Jól néz ki, de próbáljunk ki valamit, ami kissé kevésbé triviális.
Parancsok
deklarálja -xf szavakatdeklarálja -xf print-line
1 10 $ (szavak | wc -l) | xargs -i bash -c "words | print-line "
Kimenet
111
21
31
41
51
61
71
81
91
oké. Most ez inkább hasonlít rá! Látja, hogyan használható a sed egy bash szkriptben a fájl bármely sorának kinyomtatásához.
Sed példák egyenértékű parancsok nélkül
Parancssori környezetben néha a legkevesebb ellenállást eredményező megoldás elérési útja a sed módszer; különben végül több munkát végez, mint amire szükség van. Néhány parancs az alábbiakban szerepelhet.
Parancsoljon minden sort egy shell szkriptben
sed -e 's / ^ / # /' -Törölje az első sort
sed -e '1d' -
Törölje az utolsó sort
sed -e '$ d' -
Helyezzen be egy sort a mintának megfelelő vonalak elé
sed '/ 0 $ / i ---' -
Helyezzen be egy sort a mintának megfelelő vonalak után
sed '/ 0 $ / ---' -
Csíkolja ki a html címkéket
sed -e's /<[^>] *.// g ' -
Frissítse az ereg-et a régi php-kódban, hogy php7 vagy újabb verzióban fusson
sed 's / ereg (\ ([^,] * \).\ ([^)] * \)./ strpos (\ 2, \ 1) / g '
Ellenőrizze, hogy a sed korábbi-e, mint egy bizonyos verzió
sed -e 'v 4.5 ' -
Példa a bash-ban elágazó sed változatra
A példák felett van egy sor annak ellenőrzésére, hogy a sed korábbi-e, mint egy bizonyos verzió, amelyet használhatunk a verzió elágazás megvalósításához a bash-ban, ami véleményem szerint könnyebb, mint megpróbálni olyan funkciót végrehajtani, amely összehasonlítja a sed -version kimeneti verziószámokat. Ez az egyetlen buktató, hogy ha van a sed korábbi verziója, amely nem támogatja a v parancsot, akkor bajban vagyunk.
Parancsok
test-sed-version-at-most ()visszhang -n | sed "v $ 1" - 2> / dev / null
próbaverzió ()
echo -n "$ 1 verzió. oké. Tedd a ";
test-sed-version-at-maximum $ 1 &&
visszhang -n "régi";
igaz
||
visszhang -n "új"
;
visszhang "módon."
fő ()
helyi v;
a v-re 4-ben.4,5;
csinálni
try-version $ v;
Kész
fő-
Kimenet
4. verzió.4. oké. Csináld a régi módon.4. verzió.5. oké. Csináld új módon.
Ne feledje, hogy a gépemen futó sed verziója e karakterek beírásakor 4.4. ábra, amely megmagyarázná a fenti kimenetet. Ugyanakkor a gnu sed legújabb verziója 4 volt.7, kb. 3 évvel idősebb, mint nálam. A sedem öreg! Valójában a sed 4-ben.0.A 6. ábrán egy paramétert adtak a verzió parancshoz, így ez a stratégia minden említett legalább v4 esetén működik.0.6, ami engedékeny, tekintve, hogy a verzió 2003 elején jelent meg. Jó vagy.
Végeztem néhány extra ásást, valójában a HÍREK kiolvasva a legújabb forráskódot. 4. verzió.A 6-nak van egy új funkciója, a -debug, amely kiírja a szkriptet és megjegyzi a kimeneti sorokat. Ez lehetővé tenné a bash függvények által generált sed szkriptek fordítását kanonikus formában. Menő! Csak ne felejtsd el, hogy a bash-ban elágazó sed verzióra van szükséged. Itt jön szóba ez a sed példa.
Példa bash függvényre, amely sed-et használ a HTML-címkék eltávolításához
A fenti példákban van egy sor a HTML-címkék eltávolítására. Vessük ezt egy bash függvénybe, és használjuk az összes HTML-címke eltávolításához az utolsó cikkből, amelyet írtam.
Parancsok
szalagcímkék ()sed -e's /<[^>] *.// g ' -
göndörítés https: // linuxhint.com / bash_cut_command / --silent | szalagcímkék
Nem mondhatom, hogy tökéletes, de legalább olvasható a terminálon.
Példa munkafolyamatokkal: Példa munkafolyamatra: biztonságosan cserélje le az összeset a find, a grep és a sed használatával
Nyugodtan mondhatjuk, hogy a sed használatával az -i opcióval végzett változtatások visszafordíthatatlanok. Vagyis, hacsak nem teljesen biztos abban, hogy milyen szöveget kell kicserélni, akkor valószínűleg egynél kevesebb karakter lesz a kitűzöttnél. Ezért ebben a példában a sed-et használjuk a munkafolyamatban a szöveg biztonságos cseréjéhez az összes kiválasztott fájlban.
Munkafolyamat
- megtalálja
- grep
- sed
megtalálja
Itt válassza ki a kicserélendő fájlokat. Azt javaslom, hogy használjon egy parancsot ezek mentén:
find -type f -name | grep -v -e | xargs -i…Például korlátozhatja a fájlokat a PHP-fájlok helyettesítésére a git-tárház könyvtárak kivételével az alábbiak szerint.
find -type f -name \ *.php | grep -v -e '.git '| xargs -i…További információ az xargs parancsról a bash-ban.
grep
Ezután megpróbáljuk egyeztetni a some_pattern-t az alább kiválasztott fájlokban. Ne feledje, hogy mivel az -o opciót használjuk a grep számára, a kimenet csak egyezett karakterláncot mutat, ha van ilyen.
find -type f -name \ *.php | grep -v -e '.git '|xargs -i grep -e néhány_minta -o
A fenti parancsnak vissza kell adnia a some_pattern karakterláncnak megfelelő listát.
sed
Végül ki akarjuk cserélni az összes stringet, amely megfelel a some_pattern-nek. Ehhez át kell alakítanunk a grep-et sed-be az alábbiak szerint.
find -type f -name \ *.php | grep -v -e '.git '|xargs -i sed -i -e s / néhány_minta / csere / g
A grep parancs sed -i lesz, és az -o opció törlődik. És itt van.
Most megnézheti, hogy korábban milyen szerelvényeket cserélnek le sed-ben, ahelyett, hogy tesztelné a szerencséjét.
Végjegyzetek a példákban használt opciókról
Az alábbiakban felsoroljuk a röviden tárgyalt sed példákban használt lehetőségeket.
választási lehetőség | Leírás |
-én | Szerkesztés a helyén. Ha a bemenet fájl (nem továbbítva), akkor a kifejezések eredménye felülírja a fájl tartalmát. Sed elfogad egyet pl. sed -n… |
-e | -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ést nem érintő vonalat. Ez az, ha a kifejezés egy nyomtatott utasítás az sed nyelven, akkor a nyomtatási utasításban nem szereplő sorok nem lesznek benne a kimenetben. pl. sed -n…
|
A rendelkezésre álló sed opciókról további információt a sed -help oldalon talál
Az egyenértékű parancsokra vonatkozó záró megjegyzések a példákban szerepelnek
A következő parancssori segédprogramok szerepelnek a sed példákban egyenértékű parancsokkal.
- fajta
- fej
- farok
- grep
- macska
- Tr
- tee
Végjegyzet a zárójelre - például egyenértékű parancsok
Abban az esetben, ha kíváncsi vagy, mi történik a példában a - karakterrel, ez a jegyzet az Ön számára szól. A példákban a legtöbb parancs után egy - karaktert adtam hozzá, hogy arra utaljak, hogy a bemenet csövön keresztüli fogadására számítunk. Vagyis,
cat some-file | rendezés -R - | fej -1Ha azonban a pipa bal oldalán található parancs létezik, a következőképpen elhagyhatjuk a célzást.
cat some-file | rendezés -R | fej -1Ez történt a példákban szereplő - karakter után parancsokkal.
Végjegyzetek a funkciókhoz a beállításhoz
Ha keres, itt találhatók a fenti példák beállításának funkciói. A kimenet a deklaráljuk -f használatával. További felhasználásokért olvassa el a bash deklarálja parancsot.
Parancsok
szavak ()100. sz
rúd ()
visszhang ---
old-php ()
echo '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 felvettem útközben. A Sed egy hatékony parancssori segédprogram és kifejező nyelv a szöveges fájlok kezeléséhez. Ha szerette megismerni a sed-et, ne aggódjon, még sok minden még érintenie kell. Sed tovább.