У одређеним приликама желимо да заменимо текст у датотеци, на пример, променимо у Доцумент.ткт све што „моја породица“ говори за „нас“. Да бисмо то постигли можемо користити наш преферирани уређивач текста (Кате, Гедит, СублимеТект итд.), Али увек је добро знати варијанте и друге начине за постизање истог резултата 🙂
Дешава се да са регуларни изрази то можете постићи, команда сед је једноставно величанствена, има безброј варијанти и опција, али ... за оне који само желе да замене текст из најмање сложен могући начин, за њих доносим ову много једноставнију варијанту:
Следећи пример, имамо датотеку Доцумент.ткт смештен у $ ХОМЕ / Доцумент.ткт са следећим текстом:
(...) ми фамилиа то је као и сви они, попут вашег или вашег комшије. заправо ми фамилиа Трудимо се да будемо одговорни људи и у очима друштва политички и социјално коректни. Међутим, у мојој кући је црна овца, и то је моја улога ЛОЛ! Одувек сам била та која се не плаши да каже шта мисли (иако то очигледно није тачно у очима друштва), иако је у стварности моја породица сита
прљавштинаданашње друштво.
Следећом командом ћете променити «ми фамилиа" од стране "нас":
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
Проблем ове друге варијанте је што се неће заменити у датотекама у подмапама суб
У сваком случају, надам се да вам је било занимљиво. За мене је то било јако корисно, већ могу заменити текст директно са терминала ... сјајно! 😀
Па, мислим да многи од нас овде знају команду сед, која има исту сврху, чини је много боље и лакша је за употребу ...
Хвала за ваш коментар,
Само два детаља, зашто кажете да га сед чини бољим? Да ли је заиста лакше користити са толико „чудних“ ликова?
Поздрав свима!!!. Користио сам команду жеђ, а овде описана метода са перлом је једноставнија. Хвала КЗКГ ^ Гаара !!!.
Хвала на коментару 🙂
Ето, бар мени ово делује једноставније од регуларних израза ... да се са толико „чудних“ ликова може учинити нешто заиста сложено за разумевање и учење несавестанима.
Постоји „стара“ пословица: „Имао сам проблем, одлучио сам да користим Регуларне изразе ... сада имам ДВА проблема“ 😉
ХАХАХАХАХАХАХА !!!
Регуларни изрази могу нам спасити живот у одређеном тренутку ... да, треба много времена да научимо како да их користимо и да не умремо покушавајући.
Да сам знао ову заповест годинама, БОГ !! како би мој живот био једноставан 😀
Јасно! Добро обрађени, врло су моћни 🙂 Ништа боље за манипулисање текстом. Али понекад, као што кажете у овом случају са Перлом, не морате ићи тако далеко ако је замена довољна.
Ионако бих користио Питхон :)
Али у жеђи то видим још једноставније ... радим ли нешто погрешно?
сед -и "ако / шта-желим-променити / ново-ставити /" датотеку-у-коју-заменити
хех хех ... и ако желим да заменим „хттп://ми.блог.цом/цонтент/“ са „хттп://ми.блог.цом/уплоадс/филес/“ 😀 ... већ сте ту ставити \ са размацима и другима, а постаје сложено или не?
Није обавезно користити / као сепаратор. Погледајте са +
сед -и «с + хттп: //ми.блог.цом/цонтент/+хттп: //ми.блог.цом/уплоадс/филес/+» датотека
О_О… ВТФ!
Сад сте ми отворили читав универзум опција .. О_О
Волим ове постове у којима сви нешто научимо 🙂
Ни то нисам знао.
Више волим да користим директно ви ..
Једноставно као:
:% с / нас / моја породица / г
% -> цео документ
с -> претрага
г -> све појаве
Поздрав ..
Хвала!
Нисам знао како се то ради са ви
Додато у омиљене!
Хвала!
Погледајте га ако имате мало наредбе рпл
http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/
Одличан улазак! У случају да је неко заинтересован, исто је и са наредбом Линук сед: http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html
А шта се догађа ако унутар датотеке оно што желим да заменим има наводнике?
Пример замените оно што каже текст: »1 ″ текстом:» 2 ″
каква би била команда?
здраво
Желео сам да заменим низ који је имао @ у средини и само сам променио текст у знак пре ат.
текст за промену: Живео Перу
нови текст: Вива ми патриа @перцисалгадо
Приказано: Живела моја отаџбина
Хвала на помоћи
"\" Морате користити косу црту пре знакова са двоструком употребом @, #, тако да се тумаче као текст.
А како то да радим у прозорима ????