Konkreetsete ridade kustutamine failist sed abil

Teatud juhtudel peame kustutama failist konkreetse rea või mitu, näiteks on minuga juhtunud, et mul on olnud terve failide loend ja ma pean kustutama nende kõigi rida nr 27 (rida nr 27 on ACL-i rida) , norm, reegel, konfiguratsioon), kas ma saan faili failide kaupa redigeerida või saan käsuga lihtsalt saavutada vajaliku janu ja bashi skript (valikuline).

Kuid proovime ühte faili mõnevõrra lihtsana.

Toimik on meil olemas distros-deb.txt mis sisaldab seda:

debian

ubuntu

Archlinux

soolad

piparmünt

Teisisõnu fail distros-deb.txt on see, kuhu me paneme Debiani-põhised distrod, kuid seal näeme, et real # 3 on "archlinux", distro, millel pole ilmselgelt midagi pistmist Debianiga, seega peame selle rea kõrvaldama. Selle faili rea nr 3 kõrvaldamiseks paneme järgmise:

sed "3d" distros-deb.txt > distros-deb-ok.txt

Selle joone selgitamine on mõnevõrra lihtne, kasutades janu "3d" me näitame, et kustutame rea nr 3 koos distros-deb.txt Me näitame, millise failiga töötada, st kustutage selle faili rida nr 3, siia vajutades sisestusklahvi , näitab see, mida me tahame, kuid terminalis, nii et > distros-deb-ok.txt me näitame, et selle asemel, et tulemust terminalis näidata, pani ta selle sellenimelisse faili.

Mis on lihtne?

Samuti võime vältida > distros-deb-ok.txt õige parameetri abil janu, parameeter -i

See tähendab, et kui me tahame failist rea eemaldada ja selle sama nimega (ja mitte mõnesse muusse faili) salvestada, lisage lihtsalt parameeter -i :

sed -i "3d" distros-deb.txt

See eemaldab distros-deb.txt-st rea nr 3 ja salvestab selle.

Mis siis, kui ma tahan ridade vahemikku, see tähendab joonte nr 3, aga ka # 4 ja # 5 eemaldamist? Selle saavutamiseks paneme vahemiku 3 kuni 5, see tähendab:

sed -i "3,5d" distros-deb.txt

Ja see näitab mulle ainult debiani ja kubuntut 😀

Mis siis saab, kui ma tahan kustutada 2. realt viimasele, kui ma ei tea ridade koguarvu?

Kasutage lihtsalt dollari sümbolit - »$

sed -i "2,$d" distros-deb.txt

Kui soovite kõrvaldada esimeselt realt numbrile 4, paneme lihtsalt väärtuse 1 alguses:

sed -i "1,4d" distros-deb.txt

See on olnud kõik, väga kasulik näpunäide, kui soovite teha bash-skripte ülesannete automatiseerimiseks ja peate muutma ja kõrvaldama konfiguratsioonifailide ridu, et saaksime kasutada janu o perl, samuti kõrvaldamiseks teame seda juba sed-ga teha

seoses


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   MES-aren DIJO

    Väga hea panus 😉

    1.    KZKG ^ Gaara DIJO

      Aitäh

      Muide, me saime teie e-kirja kohe, ma vastan teile 😀

      seoses

  2.   nimeta DIJO

    Terminali, serverite ja ssh-ühenduste ülempreestrina tulen teie juurde, oi, suurepärane KZKG ^ Gaara, ja küsin teilt: kust saaksin oma teadmatuse tasemel õpetuse, mis võimaldab mul jagada ssh-ühendusi kahe kaugmasina vahel erinevates võrkudes tekstifailid, pdf, pilt ja heli (mp3) ...

    🙂

    Tõsiselt, kas saaksite mind selles osas suunata, mul on kaks masinat, üks tööl ja üks kodus ning mul on vaja nende vahel ssh-ühendust (sest nagu ma aru saan, lubab ssh sisu masinate vahel jagada, kas mul on õigus?
    Ja kui ma eksin, siis millist rakendust soovitate?
    Ja kust ma leian selles osas põhiõpetuse?

    1.    -spiker- DIJO

      scp

      scp kasutaja @ masina aadress: tee kasutaja @ masina aadress: tee.

      Sama süntaks nagu cp, allikas -> sihtkoht.

  3.   f3niX DIJO

    Sa ilmusid mehele, sa olid kadunud.

  4.   Joaquin DIJO

    Hea näpunäide!

  5.   LycusHackerEmo DIJO

    Huvitav näpunäide ... xD

    Kas olete juhtunud teadma sellist, mis tõstab julge teksti esile?
    Ma mõtlen, et mul on txt-fail, mis on sõnastik, sellel on rohkem kui 10000 XNUMX rida ja ma tahan, et see tõstaks teatud teksti enne peatamispunkte ":" esile ja ükshaaval tegemine on liiga palju.

    1.    KZKG ^ Gaara DIJO

      Tere,

      Txt-fail on lihttekst, nagu nimigi ütleb ... tavaline, ilma vormingute või muu sarnaseta, vabandust, aga ma ei usu, et seda, mida te küsite, saab teha? 🙁

      seoses

      1.    aka DIJO

        tegelikult saab, aga peaksite teadma sihtkoha vormingut.
        nt:
        echo $ (kaja "Robert: Tere, muutke siin" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
        see on toimetuleku küsimus.
        teine ​​kustutamise viis, mida saab kasutada, on sed '/' $ 1 '/ d', kuid selles peate olema kindel.

        1.    LycusHackerEmo DIJO

          siis lõpeta selle salvestamine kausta * .odt

          Kas LibreOffice'iga pole seda lihtsam teha?

  6.   Lolo DIJO

    Kas saaksite osa reast kustutada ja ülejäänud osa jätta?

    Oletame, et tahan kõik kustutada teatud rea sõna ees.

    Või kustutage kõik, mis sellele sõnale järgneb.

    1.    aka DIJO

      Jah, see on regexi tõmbamine (vajadusel mees sed -r, –regexp-extended)
      Alustades sellest, mida leian
      kaja «Robert: Tere. Muuda siin »| sed 's / Muuda //'
      täpselt määratletud mustriga ja. (üks märk) ja * (rohkem kui üks)
      Pärast:
      kaja «Robert: Tere. Muuda siin »| sed 's / Muuda. * //'
      Enne:
      kaja «Robert: Tere. Muuda siin »| sed 's /. * Muuda //'
      Kui on oluline, et sõna ilmuks
      kaja «Robert: Tere. Muuda siin »| sed 's / Muuda. * / Muuda /'
      või täpsemalt
      reas, mis sisaldab Robertit, mis toimub pärast Change'i
      kaja -e «Fritz: Tere. Muuda siin \ nRobert: Tere. Muuda siin »| sed '/Robert/s/Cambio.*//'
      või nagu alguses võta välja teine ​​rida ja töötle ülejäänu
      kaja -e «Fritz: Tere. Muuda siin \ nRobert: Tere. Muutke siin \ nMuud »| sed -e 2d -e 's / Muuda. * //'
      kaja -e «Fritz: Tere. Muuda siin \ nRobert: Tere. Muutke siin \ nMuud »| sed '2d; s / Muuda. * //'

      1.    Lolo DIJO

        Aitäh, see on mulle väga kasulik.

  7.   MSX DIJO

    Tore artikkel, mis mulle meeldib, kui suurepärane SysAdmin!
    Mis oleks meie elu ilma sed, awek, perl, grep, saba, pea, "Emacs" ja nii paljude muude oluliste tööriistadeta!

  8.   Lisbeth Ollarves DIJO

    Aitäh, sellest oli palju abi.

  9.   Pins DIJO

    Tere, ja kuidas saaksite sama käsu failist ridu 1,4 ja 10 kustutada?