MiVue Pro - jak bezprzewodowo pobierać pliki z wideorejestratora WIFI OTA | ForumWiedzy
Tartalomjegyzék:
Szövegfájlokkal való munka során gyakran meg kell találnia és cserélnie kell egy vagy több fájlban található szövegrészeket.
sed
egy rendszerszintű program. Alapszintű szövegszerkesztést végezhet fájlokon és bemeneti folyamatokon, például csővezetéken. A
sed
segítségével kereshet, megtalálhat és cserélhet, beszúrhat és törölhet szavakat és sorokat. Támogatja az alap- és a kibővített reguláris kifejezéseket, amelyek lehetővé teszik az összetett minták illesztését.
, arról beszélünk, hogy miként lehet megtalálni és cserélni a húrokat a
sed
. Azt is megmutatjuk, hogyan végezzünk rekurzív keresést és cserét.
Keresse meg és cserélje ki a
sed
A
sed
több változata létezik, némi funkcionális különbséggel közöttük. A macOS a BSD verziót használja, és a legtöbb Linux disztribúció alapértelmezés szerint előre telepítve van a GNU
sed
verzióval. A GNU verziót fogjuk használni.
A szöveg keresése és helyettesítése a
sed
használatával a következő formában alakul ki:
sed -i 's/SEARCH_REGEX/REPLACEMENT/g' INPUTFILE
-
-i
- Alapértelmezés szerint ased
a kimenetet írja a standard kimenetre. Ez az opció azt mondja ased
hogy szerkessze a fájlokat a helyükön. Ha kiterjesztést kapnak (ex -i.bak), akkor az eredeti fájlról biztonsági másolat készül.s
- Helyettesítő parancs, valószínűleg a leggyakrabban használt parancs a sed-ben./ / /
- Elválasztó karakter. Bármely karakter lehet, de általában a perjel (/
) karaktert használja.SEARCH_REGEX
- Normál karakterlánc vagy reguláris kifejezés, amelyet keresni kell.REPLACEMENT
- A csere karakterlánc.g
- Globális csere zászló. Alapértelmezés szerint ased
a fájlt soronként olvassa, és csak a sorban aSEARCH_REGEX
első megjelenését változtatja meg. A helyettesítő zászló biztosításakor az összes esemény kicserélésre kerül.INPUTFILE
- A fájl neve, amelyen futtatni szeretné a parancsot.
Jó gyakorlat, ha idézeteket teszünk az argumentum körül, hogy a héj meta-karakterei ne bontsanak ki.
Lássunk példákat arra, hogyan lehet a
sed
parancsot használni a fájlokban található szöveg keresésére és cseréjére annak leggyakrabban használt beállításaival és jelöléseivel.
Bemutatási célokra a következő fájlt fogjuk használni:
file.txt
123 Foo foo foo foo /bin/bash Ubuntu foobar 456
sed -i 's/foo/linux/' file.txt
123 Foo linux foo linux /bin/bash Ubuntu foobar 456
A globális csere jelzővel a
sed
felváltja a keresési minta minden előfordulását:
sed -i 's/foo/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu linuxbar 456
Mint már észrevetted, az előző példában a
foobar
karakterláncon belüli
foobar
karakterláncot is kicserélik. Ha ez nem a kívánt viselkedés, akkor használja a keresett karakterlánc mindkét végén a szegélyes kifejezést (
\b
). Ez biztosítja a részleges szavak nem egyezését.
sed -i 's/\bfoo\b/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu foobar 456
Használja az
I
jelzőt, hogy a mintázat illesztése érzéketlen legyen. Az alábbi példában mind a
g
, mind az
I
jelzőt használjuk:
sed -i 's/foo/linux/gI' file.txt
123 linux linux linux linux /bin/bash Ubuntu linuxbar 456
sed -i 's/\/bin\/bash/\/usr\/bin\/zsh/g' file.txt
A könnyebb és sokkal olvashatóbb lehetőség egy másik elválasztó karakter használata. A legtöbb ember függőleges sávot (
|
) vagy kettőspontot (:) használ, de bármilyen más karaktert is használhat:
sed -i 's|/bin/bash|/usr/bin/zsh|g' file.txt
123 Foo foo foo foo /usr/bin/zsh Ubuntu foobar 456
Használhat reguláris kifejezéseket is. Például, hogy keressen mind a három számjegyű számot, és cserélje le azokat a használt karakterláncszámra:
sed -i 's/\b\{3}\b/number/g' file.txt
number Foo foo foo foo /bin/bash demo foobar number
A sed másik hasznos tulajdonsága, hogy használhatja az ampersand karaktert
&
amely megfelel az illesztett mintának. A karakter többször is használható.
Ha például göndör zárójeleket szeretne
{}
hozzáadni minden háromjegyű szám körül, írja be:
sed -i 's/\b\{3}\b/{&}/g' file.txt
{123} Foo foo foo foo /bin/bash demo foobar {456}
Végül, de nem utolsósorban, mindig jó ötlet, hogy biztonsági másolatot készítsen a
sed
fájllal való szerkesztéskor. Ehhez csak adja meg a
-i
opció kiterjesztését. Például a
file.txt
szerkesztéséhez és az eredeti fájl
file.txt.bak
formátumban történő mentéséhez használja:
sed -i.bak 's/foo/linux/g' file.txt
ls
Rekurzív keresés és csere
Időnként rekurzív módon keresni kell egy karakterláncot tartalmazó fájlok könyvtárait, és minden fájlban ki kell cserélni a karakterláncot. Ezt úgy lehet végrehajtani, mint például a
find
vagy
grep
, hogy a fájlokat rekurzív módon keresse meg a könyvtárban, és csatolja a szűrni kívánt fájlneveket.
A következő parancs rekurzív módon keresi a fájlokat az aktuális munkakönyvtárban, és átadja a fájlneveket a
sed
fájlnak.
find. -type f -exec sed -i 's/foo/bar/g' {} +
A nevekben helyet tartalmazó fájlokkal kapcsolatos problémák elkerülése érdekében használja a
-print0
opciót, amely megmondja, hogy a fájl nevét kinyomtatja a null karakterrel, majd írja be a null karaktert, és illessze be a kimenetet az
xargs -0
segítségével:
find. -type f -print0 | xargs -0 sed -i 's/foo/bar/g'
A könyvtár kizárásához használja a
-not -path
beállítást. Például, ha egy karakterláncot cserél a helyi git repo-ban, hogy kizárjon minden pontot (
.
) -Vel kezdődő fájlt, akkor használja:
find. -type f -not -path '*/\.*' -print0 | xargs -0 sed -i 's/foo/bar/g'
find. -type f -name "*.md" -print0 | xargs -0 sed -i 's/foo/bar/g'
Egy másik lehetőség a
grep
parancs használata az összes fájl keresési mintázatot tartalmazó rekurzív megkeresésére, majd a fájlnevek
sed
:
grep -rlZ 'foo'. | xargs -0 sed -i.bak 's/foo/bar/g'
Következtetés
Noha bonyolultnak és bonyolultnak tűnik, kezdetben a fájlokban a szöveg keresése és cseréje
sed
nagyon egyszerű.
Ha többet szeretne tudni a
sed
parancsokról, opciókról és zászlókról, látogasson el a GNU sed kézikönyvre és a Grymoire sed bemutatójára. Ha bármilyen kérdése vagy észrevétele van, nyugodtan írjon megjegyzést.
A PGP panaszkodik az ElcomSoft-ra a Booth dekor cseréjére
A PGP stand felé nézve mutassa be a szervezők a plakátot, hogy az ElcomSoft el tudja szakítani a PGP jelszavakat
Hogyan olvashatunk pdf könyveket, chm fájlokat és szöveges fájlokat a psp-en
Tanulja meg, hogyan olvashatja el a PDF könyveket, a CHM-et és a szöveges fájlokat a PSP-n.
Hogyan használhatjuk a bolond láthatatlan android billentyűzetet az érintéses gépeléshez
Íme, hogyan lehet a Fleksy Invisible billentyűzetet használni az Android számára érintésíráshoz.