Како избрисати одређене редове из датотеке користећи сед

У одређеним приликама морамо да избришемо одређену линију из датотеке или неколико њих, на пример, десило ми се да сам имао читав списак датотека и да морам да избришем ред # 27 свих ових (ред # 27 је тај АЦЛ-а, норме, правила, конфигурације), или могу да уређујем датотеку по датотеку или могу само постићи оно што ми треба помоћу команде жеђ и басх скрипту (опционално).

Покушајмо са једном датотеком донекле једноставно.

Имамо досије дистрос-деб.ткт који садржи ово:

Дебиан

кубунту

арцхлинук

солуси

нана

Другим речима, датотека дистрос-деб.ткт је у коју ћемо ставити дистрос-ове засноване на Дебиану, али тамо видимо да се у реду # 3 налази „арцхлинук“, дистро који очигледно нема никакве везе са Дебианом, тако да ту линију морамо елиминисати. Да бисмо елиминисали ред # 3 те датотеке, ставићемо следеће:

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

Објаснити ову линију је донекле лако жедан "3д" наговештавамо да ћемо избрисати ред # 3, са дистрос-деб.ткт Означавамо на којој датотеци ћемо радити, односно бришемо ред # 3 ове датотеке, све до овде ако притиснемо Ентер показаће нам шта желимо али у терминалу, па са > дистрос-деб-ок.ткт ми указујемо да је уместо да резултат приказује у терминалу, ставио у датотеку са овим именом.

Шта је једноставно?

Такође, можемо избећи употребу > дистрос-деб-ок.ткт користећи одговарајући параметар од жеђ, параметар -i

Односно, у случају да желимо да уклонимо линију из датотеке и сачувамо је са истим именом (а не у другој датотеци), једноставно додајте параметар -i :

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

Ово ће уклонити ред # 3 из дистрос-деб.ткт и сачувати га.

Шта ако желим опсег линија, то јест да уклоним линију # 3, али такође и # 4 и # 5? Да бисмо то постигли ставили смо опсег од 3 до 5, то јест:

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

И показаће ми само дебиан и кубунту 😀

Па шта ако желим да избришем из реда 2 у последњи, када не знам укупан број редова?

Само користите симбол долара - »$

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

У случају да желите да елиминишете од првог реда до # 4, на почетак једноставно ставимо вредност 1:

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

Ово је било све, врло користан савет када желите да направите бас скрипте за аутоматизацију задатака и ако требате да измените и елиминишете редове конфигурационих датотека, да бисмо их могли користити жеђ o перл, као и за уклањање већ знамо како се то ради са сед 😉

поздрави


Садржај чланка се придржава наших принципа уређивачка етика. Да бисте пријавили грешку, кликните овде.

16 коментара, остави свој

Оставите свој коментар

Ваша емаил адреса неће бити објављена.

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.

  1.   мсс-развој дијо

    Врло добар допринос 😉

    1.    КЗКГ ^ Гаара дијо

      Хвала

      Иначе, ваш е-маил смо добили управо сада, одговарам вам 😀

      поздрави

  2.   безимени дијо

    Као првосвештеник терминала, сервера и ссх веза, долазим до вас, о сјајни КЗКГ ^ Гаара, и питам вас: где могу да нађем водич на нивоу свог незнања који ми омогућава да користим ссх везе између две удаљене машине у различитим мрежама за дељење текстуалне датотеке, пдф, слике и звук (мп3)….

    ????

    Озбиљно, можете ли ме упутити у вези с тим, имам две машине, једну на послу и једну код куће и треба ми ссх веза између њих (јер како разумем, ссх омогућава дељење садржаја између машина, да ли грешим?)
    А ако грешим, коју апликацију препоручујете?
    И где да нађем основну лекцију у вези с тим?

    1.    -спикер- дијо

      сцп.

      сцп усер @ мацхине_аддресс: патх усер @ мацхине_аддресс: патх.

      Иста синтакса као цп, извор -> одредиште.

  3.   Ф3ниКс дијо

    Појавио си се човече, био си изгубљен.

  4.   Јоакуин дијо

    Добар савет!

  5.   ЛицусХацкерЕмо дијо

    Занимљив савет ... кД

    Знате ли случајно ону по којој се подебљани текст истиче?
    Мислим, имам ткт датотеку која је речник, има више од 10000 редова и желим да истакне одређени текст пре „:“ тачака суспензије и радити то један по један је превише.

    1.    КЗКГ ^ Гаара дијо

      Здраво,

      Ткт датотека је обичан текст, као што и само име говори ... обичан, без формата или било чега сличног, жао ми је, али мислим да се не може учинити оно што тражите, зар не? 🙁

      поздрави

      1.    аца дијо

        заправо може, али морали бисте знати формат одредишта.
        пе:
        ецхо $ (ецхо "Роберт: Здраво. Промени овде" | сед 'с / \ ./. \\ е [40; 31м /; с / \: /: \\ е [40; 35м /')
        ствар је сналажења.
        други начин брисања који се може користити је сед '/' $ 1 '/ д', али морате бити сигурни у ре.

        1.    ЛицусХацкерЕмо дијо

          затим завршите са чувањем у * .одт

          Не постоји ли лакши начин да то урадите са ЛибреОффице?

  6.   Лоло дијо

    Да ли бисте могли да избришете део линије, а остатак оставите?

    Рецимо да желим да избришем све испред речи у одређеном реду.

    Или избришите све што следи иза те речи.

    1.    аца дијо

      Да, ствар је у повлачењу регуларног израза (ако је потребно човек сед -р, –регекп-проширен)
      Полазећи од онога што налазим
      ехо «Роберт: Здраво. Промени овде »| сед 'с / Цханге //'
      са добро дефинисаним обрасцем и са. (један знак) и * (више од једног)
      Онда:
      ехо «Роберт: Здраво. Промени овде »| сед 'с / Цханге. * //'
      Пре него што:
      ехо «Роберт: Здраво. Промени овде »| сед 'с /. * Промени //'
      Ако је важно што се реч појављује
      ехо «Роберт: Здраво. Промени овде »| сед 'с / Цханге. * / Цханге /'
      или детаљније
      у реду који садржи Роберта шта иде после Промене
      ецхо -е «Фритз: Здраво. Промени овде \ нРоберт: Здраво. Промени овде »| сед '/Роберт/с/Цамбио.*//'
      или као на почетку извадите други ред и обрадите остатак
      ецхо -е «Фритз: Здраво. Промени овде \ нРоберт: Здраво. Промените овде \ нДруго »| сед -е 2д -е 'с / Цханге. * //'
      ецхо -е «Фритз: Здраво. Промени овде \ нРоберт: Здраво. Промените овде \ нДруго »| сед '2д; с / Цханге. * //'

      1.    Лоло дијо

        Хвала вам, веома ми је корисно.

  7.   МСКС дијо

    Леп чланак, који ми се свиђа, како је сјајан СисАдмин!
    Какав би био наш живот без сед, авек, перл, греп, реп, глава, „Емацс“ и толико других основних алата!?

  8.   Лисбетх Олларвес дијо

    Хвала, било је од велике помоћи.

  9.   Перни дијо

    Здраво, а како бисте могли да избришете редове 1,4 и 10 из датотеке у истој наредби?