Kaip iš failo ištrinti konkrečias eilutes naudojant sed

Tam tikrais atvejais turime ištrinti tam tikrą failo ar kelių eilučių, pavyzdžiui, man nutiko, kad turėjau visą failų sąrašą ir turiu ištrinti visų 27 eilutes (27 eilutė yra ACL eilutė) , norma, taisyklė, konfigūracija), arba aš galiu redaguoti failą pagal failą, arba tiesiog pasiekiu tai, ko man reikia, naudodamas komandą troškulys ir bash scenarijų (nebūtina).

Pabandykime šiek tiek paprastą failą.

Mes turime bylą distros-deb.txt kuriame yra tai:

Debian

ubuntu

Archlinux

solus

mėta

Tai yra byla distros-deb.txt yra tas, kuriame mes įdėsime „Debian“ pagrindu veikiančius distros, bet ten matome, kad 3 eilutėje yra „archlinux“, platintojas, kuris, aišku, neturi nieko bendro su „Debian“, todėl turime pašalinti šią eilutę. Norėdami pašalinti šio failo 3 eilutę, įdėsime:

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

Paaiškinti šią eilutę yra šiek tiek lengva, su troškulys „3d“ nurodome, kad ištrinsime 3 eilutę su distros-deb.txt Nurodome, kurį failą reikia dirbti, tai yra, ištrinkite šio failo 3 eilutę, iki čia, jei paspausime Enter, ji parodys mums, ko norime, bet ne terminale, taigi su > distros-deb-ok.txt mes nurodome, kad užuot rodęs rezultatą terminale, jis įdėjo jį į failą tokiu pavadinimu.

Kas yra paprasta?

Taip pat galime išvengti > distros-deb-ok.txt naudojant tinkamą parametrą troškulysparametras -i

Tai yra, jei norime pašalinti eilutę iš failo ir išsaugoti ją tuo pačiu pavadinimu (o ne kitame faile), tiesiog pridėkite parametrą -i :

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

Tai pašalins 3 eilutę iš distros-deb.txt ir išsaugos.

Ką daryti, jei noriu eilutės diapazono, t. Y. Pašalinti linijas Nr. 3, taip pat Nr. 4 ir Nr. 5? Norėdami tai pasiekti, mes nustatėme diapazoną nuo 3 iki 5, tai yra:

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

Ir man rodys tik debianą ir kubuntu 😀

Ką daryti, jei noriu ištrinti iš 2 eilutės į paskutinę, kai nežinau visų eilučių?

Tiesiog naudokite dolerio simbolį - »$

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

Jei norite pašalinti iš pirmos eilutės į # 4, tada pradžioje tiesiog įrašome vertę 1:

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

Tai buvo viskas, labai naudingas patarimas, kai norite sukurti „bash“ scenarijus, kad automatizuotumėte užduotis, ir jums reikia modifikuoti ir pašalinti konfigūracijos failų eilutes, kad galėtume modifikuoti troškulys o perl, taip pat pašalinti jau žinome, kaip tai padaryti su sed sed

saludos


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   mss-devel sakė

    Labai geras indėlis 😉

    1.    KZKG ^ Gaara sakė

      Ačiū

      Beje, mes dabar gavome jūsų el. Laišką, aš jums atsakysiu 😀

      saludos

  2.   bevardis sakė

    Kaip terminalo, serverių ir ssh ryšių vyriausiasis kunigas, aš ateinu pas jus, o puiku, KZKG ^ Gaara, ir klausiu jūsų: kur aš galiu gauti savo nežinojimo lygio pamoką, leidžiančią man naudoti ssh ryšius tarp dviejų nuotolinių mašinų skirtinguose tinkluose tekstiniai failai, pdf, vaizdas ir garsas (mp3) ...

    ????

    Jei rimtai, ar galėtumėte man patarti šiuo klausimu, aš turiu dvi mašinas, vieną darbe ir vieną namuose, ir man reikia ssh ryšio tarp jų (nes, kaip suprantu, ssh leidžia dalytis turiniu tarp mašinų, ar aš teisus?).
    Ir jei aš klystu, kokią programą jūs rekomenduojate?
    O kur rasti pagrindinę pamoką šiuo klausimu?

    1.    -spygliukas, sakė

      scp

      scp vartotojas @ mašinos adresas: kelias vartotojas @ mašinos adresas: kelias.

      Ta pati sintaksė kaip ir cp, source -> paskirties vieta.

  3.   f3niX sakė

    Pasirodei žmogui, pasiklydai.

  4.   Joaquinas sakė

    Geras patarimas!

  5.   „LycusHackerEmo“ sakė

    Įdomus patarimas ... xD

    atsitiktinai nežinote tokio, kuris paryškintų paryškintą tekstą?
    Aš turiu omenyje txt failą, kuris yra žodynas, jame yra daugiau nei 10000 XNUMX eilučių, ir aš noriu, kad jis paryškintų tam tikrą tekstą prieš pakabos taškus „:“ ir daryti tai po vieną yra per daug.

    1.    KZKG ^ Gaara sakė

      Sveiki,

      Txt failas yra paprastas tekstas, kaip rodo jo pavadinimas ... paprastas, be formatų ar panašaus, atsiprašau, bet nemanau, kad tai galima padaryti, ar ne? 🙁

      saludos

      1.    aca sakė

        iš tikrųjų gali, bet jūs turėtumėte žinoti paskirties formatą.
        pvz .:
        echo $ (aidas "Robertas: Sveiki. Keisk čia" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
        tai reikalas susitvarkyti.
        kitas ištrinimo būdas, kurį galima naudoti, yra sed '/' $ 1 '/ d', bet jūs turite būti tikri dėl re.

        1.    „LycusHackerEmo“ sakė

          tada baikite jį išsaugoti * .odt

          Ar nėra lengvesnio būdo tai padaryti naudojant „LibreOffice“?

  6.   Lolo sakė

    Ar galėtumėte ištrinti dalį eilutės, o likusią likti?

    Tarkime, noriu ištrinti viską prieš žodį tam tikroje eilutėje.

    Arba ištrinkite viską, kas seka tą žodį.

    1.    aca sakė

      Taip, tai yra regexo ištraukimo klausimas (jei reikia, vyras sed -r, –regexp-pratęsė)
      Pradedant tuo, ką randu
      aidas «Robertas: Sveiki. Keisk čia »| sed 's / Change //'
      su gerai apibrėžtu modeliu ir su. (vienas simbolis) ir * (daugiau nei vienas)
      Po:
      aidas «Robertas: Sveiki. Keisk čia »| sed 's / Change. * //'
      Prieš:
      aidas «Robertas: Sveiki. Keisk čia »| sed 's /. * Keisti //'
      Jei svarbu, kad žodis pasirodys
      aidas «Robertas: Sveiki. Keisk čia »| sed 's / Keisti. * / Keisti /'
      ar labiau įmantrūs
      eilutėje, kurioje yra Robertas, kas eina po pokyčių
      aidas -e «Fritz: Sveiki. Keiskite čia \ nRobertas: Sveiki. Keisk čia »| sed '/Robert/s/Cambio.*//'
      ar kaip pradžioje paimkite antrą eilutę, o likusias apdorokite
      aidas -e «Fritz: Sveiki. Keiskite čia \ nRobertas: Sveiki. Keiskite čia \ nKita »| sed -e 2d -e 's / Keisti. * //'
      aidas -e «Fritz: Sveiki. Keiskite čia \ nRobertas: Sveiki. Keiskite čia \ nKita »| sed '2d; s / Change. * //'

      1.    Lolo sakė

        Ačiū, man tai labai naudinga.

  7.   MSX sakė

    Gražus straipsnis, kuris man patinka, kaip puiku „SysAdmin“!
    Koks būtų mūsų gyvenimas be sed, awek, perl, grep, uodegos, galvos, „Emacs“ ir daugybės kitų būtinų įrankių!

  8.   Lisbeth Ollarves sakė

    Ačiū, tai buvo labai naudinga.

  9.   Smeigtukai sakė

    Sveiki, ir kaip galėtumėte ištrinti 1,4 ir 10 eilutes iš tos pačios komandos failo?