Bizonyos esetekben törölnünk kell egy adott sort egy vagy több fájlból, például velem történt, hogy teljes fájllistám volt, és mindezekből a 27. sort törölnöm kell (a 27. sor az ACL sora. , norm, szabály, konfiguráció), vagy fájlról fájlra szerkeszthetem, vagy a parancs segítségével elérhetem azt, amire szükségem van szomjúság és egy bash szkript (opcionális).
De próbálkozzunk egy egyszerű fájllal.
Megvan az irat distros-deb.txt amely ezt tartalmazza:
debian
ubuntu
archlinux
solusok
menta
Vagyis a fájl distros-deb.txt a Debian-alapú disztribúciókat fogjuk elhelyezni, de ott látjuk, hogy a 3. sorban az "archlinux" szerepel, egy disztró, amelynek nyilvánvalóan semmi köze nincs a Debianhoz, ezért ezt a sort meg kell szüntetnünk. A fájl 3. sorának kiküszöbölésére a következőket tesszük:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Ennek a vonalnak a megmagyarázása kissé egyszerű, a szomjúság "3d" jelezzük, hogy a 3. sor törlése a distros-deb.txt Jelöljük, hogy melyik fájlon dolgozzunk, vagyis töröljük a fájl 3. sorát, egészen ide, ha megnyomjuk az Enter billentyűt , akkor megmutatja, hogy mit akarunk, de a terminálban, tehát > distros-deb-ok.txt azt jelezzük, hogy ahelyett, hogy az eredményt a terminálban mutatnánk, egy ilyen nevű fájlba tegyük.
Mi az egyszerű?
Ezenkívül elkerülhetjük a > distros-deb-ok.txt megfelelő paraméterének felhasználásával szomjúság, a paraméter -i
Vagyis abban az esetben, ha el akarjuk távolítani a sort a fájlból, és ugyanazzal a névvel mentjük (és nem egy másik fájlba), egyszerűen adjuk hozzá a paramétert -i :
sed -i "3d" distros-deb.txt
Ez eltávolítja a 3. sort a distros-deb.txt fájlból és elmenti.
Mi van, ha egy sor tartományt szeretnék, vagyis a # 3, de a # 4 és az # 5 sor eltávolítását is? Ennek elérése érdekében a 3 és 5 közötti tartományt tesszük, vagyis:
sed -i "3,5d" distros-deb.txt
És csak a debiánt és a kubuntut mutatja 😀
Tehát mi van, ha törölni akarok a 2. sorból az utolsóba, amikor nem ismerem a teljes sort?
Csak használja a dollár szimbólumot - »$
sed -i "2,$d" distros-deb.txt
Abban az esetben, ha ki akarsz küszöbölni az első sorból a # 4-be, akkor egyszerűen az 1 értéket tesszük az elejére:
sed -i "1,4d" distros-deb.txt
Ez minden volt, nagyon hasznos tipp, amikor bash szkripteket akarsz készíteni a feladatok automatizálásához, és módosítanod kell, és ki kell küszöbölnöd a konfigurációs fájlok sorait, hogy módosíthassuk szomjúság o perl, valamint annak kiküszöbölése érdekében már tudjuk, hogyan kell csinálni a sed 😉-vel
Üdvözlet
Nagyon jó hozzájárulás 😉
Köszönöm
Egyébként most kaptuk az e-mailt, válaszolok you
Üdvözlet
A terminál, a szerverek és az ssh kapcsolatok főpapjaként eljövök hozzád, ó, nagyszerű KZKG ^ Gaara, és megkérdezem tőled: hol szerezhetek olyan ismeretterjesztő oktatóanyagot, amely lehetővé teszi számomra, hogy két távoli gép között használjam az ssh kapcsolatokat különböző hálózatokon szöveges fájlok, pdf, kép és hang (mp3) megosztására…
????
Komolyan, tudna-e útmutatást adni ebben a tekintetben, nekem két gépem van, egy a munkahelyemen és egy otthon, és szükségem van egy ssh kapcsolatra közöttük (mert ahogy megértem, az ssh lehetővé teszi a tartalom megosztását a gépek között, igazam van?).
És ha tévedek, milyen alkalmazást javasol?
És hol találok egy alapvető oktatóanyagot ezzel kapcsolatban?
scp
scp felhasználó @ gép_cím: elérési út felhasználó @ gép_cím: elérési út.
Ugyanaz a szintaxis, mint a cp, forrás -> cél.
Megmutatta az embert, elveszett.
Jó tipp!
Érdekes tipp ... xD
véletlenül nem ismer olyan embert, amely kiemeli a félkövér szöveget?
Úgy értem, hogy van egy txt fájlom, amely egy szótár, több mint 10000 XNUMX sorból áll, és szeretném, ha bizonyos szöveget kiemelne a ":" felfüggesztési pontok előtt, és egyenként megtenni túl sok.
Helló,
A txt fájl sima szöveg, amint a neve is mutatja ... sima, formátumok vagy bármi hasonló nélkül, sajnálom, de azt hiszem, hogy amit kérsz, nem lehet megtenni, nem? 🙁
Üdvözlet
valójában képes, de tudnia kell a cél formátumát.
például:
echo $ (echo "Robert: Helló. Változás itt" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
a boldogulás kérdése.
a másik használható törlési mód a sed '/' $ 1 '/ d', de a re-ben biztosnak kell lennie.
majd fejezze be a mentését a * .odt fájlban
Nincs egyszerűbb módja a LibreOffice-nak?
Törölhetne egy sor egy részét, a többit pedig elhagyhatja?
Tegyük fel, hogy mindent el akarok törölni egy szó előtt egy bizonyos sorból.
Vagy töröljön mindent, ami ezt a szót követi.
Igen, ez egy regex meghúzásának kérdése (ha szükséges, ember sed -r, –regexp-extended)
Abból kiindulva, amit találok
visszhang «Robert: Helló. Változás itt »| sed 's / Change //'
jól definiált mintával és azzal. (egy karakter) és * (több)
akkor:
visszhang «Robert: Helló. Változás itt »| sed 's / Change. * //'
Előtt:
visszhang «Robert: Helló. Változás itt »| sed 's /. * Változás //'
Ha számít, hogy a szó megjelenik
visszhang «Robert: Helló. Változás itt »| sed 's / Change. * / Change /'
vagy bonyolultabb
abban a sorban, amely Robertet tartalmazza, ami a Változás után megy
echo -e «Fritz: Helló. Változás itt \ nRobert: Helló. Változás itt »| sed '/Robert/s/Cambio.*//'
vagy mint az elején vegye ki a második sort, és dolgozza fel a többit
echo -e «Fritz: Helló. Változás itt \ nRobert: Helló. Változás itt \ nEgyéb »| sed -e 2d -e 's / Change. * //'
echo -e «Fritz: Helló. Változás itt \ nRobert: Helló. Változás itt \ nEgyéb »| sed '2d; s / Change. * //'
Köszönöm, nagyon hasznos számomra.
Kedves cikk, azok, amelyeket szeretek, milyen nagyszerű a SysAdmin!
Mi lenne az életünk sed, awek, perl, grep, farok, fej, "Emacs" és még sok más nélkülözhetetlen eszköz nélkül?
Köszönöm, nagyon hasznos volt.
Helló, és hogyan lehetne törölni az 1,4 és 10 sort egy fájlból ugyanabban a parancsban?