Замените текст у датотекама само једном командом: перл

У одређеним приликама желимо да заменимо текст у датотеци, на пример, променимо у Доцумент.ткт све што „моја породица“ говори за „нас“. Да бисмо то постигли можемо користити наш преферирани уређивач текста (Кате, Гедит, СублимеТект итд.), Али увек је добро знати варијанте и друге начине за постизање истог резултата 🙂

Дешава се да са регуларни изрази то можете постићи, команда сед је једноставно величанствена, има безброј варијанти и опција, али ... за оне који само желе да замене текст из најмање сложен могући начин, за њих доносим ову много једноставнију варијанту:

Следећи пример, имамо датотеку Доцумент.ткт смештен у $ ХОМЕ / Доцумент.ткт са следећим текстом:

(...) ми фамилиа то је као и сви они, попут вашег или вашег комшије. заправо ми фамилиа Трудимо се да будемо одговорни људи и у очима друштва политички и социјално коректни. Међутим, у мојој кући је црна овца, и то је моја улога ЛОЛ! Одувек сам била та која се не плаши да каже шта мисли (иако то очигледно није тачно у очима друштва), иако је у стварности моја породица сита прљавштина данашње друштво.

Следећом командом ћете променити «ми фамилиа" од стране "нас":

perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt

То је тако једноставно 🙂

Дакле, текст би био:

(...) нас то је као и сви они, попут вашег или вашег комшије. заправо нас Трудимо се да будемо одговорни људи и у очима друштва политички и социјално коректни. Међутим, у мојој кући је црна овца, и то је моја улога ЛОЛ! Одувек сам била та која се не плаши да каже шта мисли (иако то очигледно није тачно у очима друштва), иако је у стварности моја породица сита прљавштина данашње друштво.

Синтакса је:

perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar

Наредба може изгледати мало сложено, хајде да је мало разложимо и објаснимо мало једноставније 😉

  • перл : Шта ћемо користити, перл
  • -пи : Пи, како π (приближна вредност 3.14)
  • -e : Е замишљају да «е изврши» ^ - ^
  • Затим под наводницима » отварамо са а s и затварамо са а г: "сг" ... Замислите С за Старт и Г за Гаме Овер 😀
  • Окрените се између sg морамо ставити два скупа заграда: [] y [], бити такав: „С [] [] г“
  • Унутар првих заграда, као што сам горе рекао, ићи ће текст који желимо уклонити и заменити новим, док ће у другом скупу заграда ићи нови текст који следи, следећи пример: „С [моја породица] [ми] г“

Једноставно, зар не?

Објашњење је заправо много опсежније од онога што је неопходно за команду, прилично је једноставно разумети 🙂

Перл је много, много више од пуког начина да замени текст, то је цео језик 😉

Ако желите да сазнате више о томе, инсталирајте пакет перл-док и погледајте вхооодо шта то дозвољава, то је само други универзум.

Успут и да затворите, под претпоставком да желите да пронађете све .ткт датотеке које имате у $ ХОМЕ / Доцументс / и у свакој замените "моја породица" са "ми", можете се придружити финд + перл да бисте то постигли:

find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;

Или помоћу џокер знака:

perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt

Проблем ове друге варијанте је што се неће заменити у датотекама у подмапама суб

У сваком случају, надам се да вам је било занимљиво. За мене је то било јако корисно, већ могу заменити текст директно са терминала ... сјајно! 😀


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

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

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

  1.   Успон дијо

    Па, мислим да многи од нас овде знају команду сед, која има исту сврху, чини је много боље и лакша је за употребу ...

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

      Хвала за ваш коментар,
      Само два детаља, зашто кажете да га сед чини бољим? Да ли је заиста лакше користити са толико „чудних“ ликова?

  2.   Федерицо А. Валдес Тоујагуе дијо

    Поздрав свима!!!. Користио сам команду жеђ, а овде описана метода са перлом је једноставнија. Хвала КЗКГ ^ Гаара !!!.

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

      Хвала на коментару 🙂
      Ето, бар мени ово делује једноставније од регуларних израза ... да се са толико „чудних“ ликова може учинити нешто заиста сложено за разумевање и учење несавестанима.

      1.    Гискард дијо

        Постоји „стара“ пословица: „Имао сам проблем, одлучио сам да користим Регуларне изразе ... сада имам ДВА проблема“ 😉

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

          ХАХАХАХАХАХАХА !!!
          Регуларни изрази могу нам спасити живот у одређеном тренутку ... да, треба много времена да научимо како да их користимо и да не умремо покушавајући.

          Да сам знао ову заповест годинама, БОГ !! како би мој живот био једноставан 😀

          1.    Гискард дијо

            Јасно! Добро обрађени, врло су моћни 🙂 Ништа боље за манипулисање текстом. Али понекад, као што кажете у овом случају са Перлом, не морате ићи тако далеко ако је замена довољна.
            Ионако бих користио Питхон :)

    2.    дхунтер дијо

      Али у жеђи то видим још једноставније ... радим ли нешто погрешно?

      сед -и "ако / шта-желим-променити / ново-ставити /" датотеку-у-коју-заменити

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

        хех хех ... и ако желим да заменим „хттп://ми.блог.цом/цонтент/“ са „хттп://ми.блог.цом/уплоадс/филес/“ 😀 ... већ сте ту ставити \ са размацима и другима, а постаје сложено или не?

        1.    дхунтер дијо

          Није обавезно користити / као сепаратор. Погледајте са +

          сед -и «с + хттп: //ми.блог.цом/цонтент/+хттп: //ми.блог.цом/уплоадс/филес/+» датотека

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

            О_О… ВТФ!
            Сад сте ми отворили читав универзум опција .. О_О

          2.    Гискард дијо

            Волим ове постове у којима сви нешто научимо 🙂
            Ни то нисам знао.

  3.   РАВ-Басиц дијо

    Више волим да користим директно ви ..

    Једноставно као:
    :% с / нас / моја породица / г

    % -> цео документ
    с -> претрага
    г -> све појаве

    Поздрав ..

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

      Хвала!
      Нисам знао како се то ради са ви

  4.   ст0рмт4ил дијо

    Додато у омиљене!

    Хвала!

  5.   н3сторм дијо

    Погледајте га ако имате мало наредбе рпл

    http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/

  6.   ДуранГ дијо

    Одличан улазак! У случају да је неко заинтересован, исто је и са наредбом Линук сед: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html

    1.    Сумњајући дијо

      А шта се догађа ако унутар датотеке оно што желим да заменим има наводнике?
      Пример замените оно што каже текст: »1 ″ текстом:» 2 ″
      каква би била команда?

  7.   Перци салгадо дијо

    здраво

    Желео сам да заменим низ који је имао @ у средини и само сам променио текст у знак пре ат.

    текст за промену: Живео Перу
    нови текст: Вива ми патриа @перцисалгадо
    Приказано: Живела моја отаџбина

    Хвала на помоћи

  8.   анониман дијо

    "\" Морате користити косу црту пре знакова са двоструком употребом @, #, тако да се тумаче као текст.

  9.   габа дијо

    А како то да радим у прозорима ????