Реклама

Два најкриминиранија Линук алата су Сед и Авк. Иако се може чинити помало скривеним, ако икад будете морали да уносите промене на великим комадима кода или текста или ако ћете икада морати да анализирате неки текст, Сед и Авк су непроцењиви.

Па, шта су они? Како се користе? И како, када се комбинују заједно, олакшавају обраду текста?

Шта је Сед?

Сед развијен је 1971 у Белл Лабс, од стране легендарног рачунарског пионира Лее Е. МцМахон.

Назив се залаже стреам едитори то је некако оно што ради. Омогућује вам уређивање тела или токова текста програмско, кроз компактан и једноставан, а опет Турингов програмски језик.

Начин рада је једноставан: чита текст, ред по ред, у међуспремник. За сваки редак извршиће унапред дефинисана упутства, где је то применљиво.

На пример, ако је неко написао Сед скрипту која је реч „пиво“ заменила са „сода“, а затим проследила у фајл текста који садржи цео текст песме „99 флаша пива на зиду“, она би прошла кроз тај фајл, ред по ред, и штампала „99 флаша соде у зиду“, и тако на.

instagram viewer

Најосновнија сценариј Сед је Хелло Ворлд. Овде користимо услужни програм Уник Ецхо који само исписује низове за штампање „Хелло Ворлд“. Али то преносимо Седу и кажемо му да "Свет" замени са "Дејв". Саморазумљиве ствари.

ецхо "Хелло Ворлд" | сед с / свет / Даве
седавк-даве

Такође можете комбиновати упутства Сед-а у датотеке, ако требате да урадите нешто сложеније уређивање. Инспирисан ова урнебесна Реддит нит, Пренећу текст за А-Ха Узми ме, и замените сваку инстанцу „ја“, „ја“ и „моје“ Грегом.

Прво ћу текст песме ставити у текстуалну датотеку под називом том.ткт. Тада ћу отворити жељени уређивач текста (мој омиљени је Вим Топ 7 разлога за пружање шансе Вим Едитору текстаГодинама покушавам један уређивач текста за другим. Реци ми, пробао сам. Сваки од ових уређивача користио сам више од два месеца као свој главни свакодневни уредник. Некако, ја ... Опширније , али Нано нано вс. вим: Успоредни уређивачи текста терминалаИако је Линук постао довољно једноставан да га практично користе сви без икаквог коришћења Терминала, постоје неки од нас који га редовно користе или су знатижељни како неко може да контролише ... Опширније и Гедит гедит: Један од најпопуларнијих уређивача једноставних текстова [Линук и Виндовс]Када помислите на уређиваче обичног текста, прва ствар која вам се може јавити је апликација за Виндовс Нотепад. Ради управо оно што наводи његов опис посла - обичне функције за обичан текст ... Опширније су оба одлична избора), и додајте следеће редове. Уверите се да се датотека коју креирате завршава .сед.

сед-грег-сед

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

Ово неће функционисати савршено, као да сте ручно заменили сваку инстанцу „ја“, „ја“ и „моје“. Запамтите, ми то само користимо као вежбу да бисмо показали како можете груписати инструкције Седа у једну скрипту, а затим их извршити једном наредбом.

Затим морамо позвати датотеку. Да бисмо то постигли, извршавамо ову наредбу.

цат том.ткт | сед -ф грег.сед

Успоримо и погледамо шта ово ради. Читаоци орлова са очима приметили су да смо не користећи Ецхо овдје. Користимо Цат. То је зато што док Цат штампа цео садржај датотеке, одјек ће само исписати име датотеке. Такође ћете приметити да покрећемо Сед са заставом „-ф“. Ово му говори да отвори скрипту као датотеку.

Крајњи резултат је ово.

сед-грег-сцрипт

Такође је вредно напоменути да Сед подржава регуларне изразе (РЕГЕКС). Они вам омогућавају да дефинишете обрасце у тексту, користећи посебну и компликовану синтаксу.

Ево примера како то може функционисати. Узећемо горе поменуте текстове песама, али користите регек да бисте одштампали сваку линију која не започните с „Узми“.

цат том.ткт | сед / ^ Таке / д
сед-регек-таке

Сед је, наравно, невероватно користан. Али још је снажнији у комбинацији са Авк-ом.

Шта је Авк?

Авкпопут Седа, програмски језик дизајниран за рад са великим текстовима текста. Али док се Сед користи за обраду и модификацију текста, Авк се углавном користи као алат за анализа и извештавање.

Као и Сед, Авк је први пут развијен у Белл Лабс 1970-их. Његово име не потиче од онога што је програм заиста, већ презимена сваког од аутора - Алфред Ахо, Петер Веинбергер и Бриан Кернагхан.

Авк делује тако што чита текстуалну датотеку или улазни ток једну линију. Свака линија се скенира како би се видјело одговара ли унапријед дефинираном обрасцу. Ако се пронађе подударање, извршава се акција.

Али иако Сед и Авк могу да имају сличне сврхе, то су два потпуно различита језика, са две потпуно различите филозофије дизајна. Авк више подсећа на неке језици опште намене Како одабрати језик програмирања како бисте научили данас и стекли одличан посао за двије годинеМогу бити потребне године посвећеног рада да постанете заиста добар програмер; тако да постоји начин да одаберете прави језик који ће почети од данас, како би се сутра запослили? Опширније , попут Ц, Питхон-а и Басх-а. Има ствари попут функција и више налик Ц-приступу стварима попут итерације и променљивих (Јамес Бруце) објаснио како итерација делује Апсолутне основе програмирања за почетнике (други део)У другом делу нашег апсолутног водича за почетнике програмирања, покрићу основе функција, повратне вредности, петље и услов. Обавезно прочитајте први део пре него што се позабавите овим, где сам објаснио ... Опширније ). Једноставно речено, то више личи на програмски језик.

Дакле, хајде да испробамо. Користећи текст песме Таке Он Ме, штампаћемо све линије дужине од 20 знакова.

авк 'дужина ($ 0)> 80' том.ткт дужина буке

Следећи пример сам бесрамно креветац од званична документација Авк-а. Али то је сјајан пример потенцијала овог моћног, а опет сићушног језика. Такође је сјајна демонстрација како ствари попут итерације и променљивих функционишу у њој. Прво направите датотеку под називом „ВордЦоунт.авк“ и додајте следеће редове.

{фор (и = 1; и <= НФ; и ++) фрек [$ и] ++ }
ЕНД {фор (реч ин фрек) принтф "% с \ т% д \ н", реч, фрек [ворд] }

Сачувајте га, а затим га покрените следећом наредбом.

авк -ф ВордЦоунт.авк том.ткт

авк-вордцоунт
Супер, зар не? Вероватно ћете приметити да нису ни у каквом редоследу. ти моћи сортирајте резултате помоћу Уник услужног програма за сортирање. Али оставићемо то за други дан. Бићемо једноставни.

Комбиновање двоје

Авк и Сед су обојица невероватно моћни када се комбинују. То можете учинити помоћу Уник цеви. То су „|“ бита између команди.

Покушајмо ово: Навести ћемо све редове у „Таке Он Ме“ који садрже више од 20 знакова, користећи Авк. Онда ћемо уклонити све линије које почињу "Узми". Заједно, све изгледа овако:

авк 'дужина ($ 0)> 20' том.ткт | сед / ^ Таке / д

И производи ово:

авк-ленгтх-сед

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

цат том.ткт | сед / ^ Узми / д | авк -ф ВордЦоунт.авк
авк-вордцоунт-сед

Снага Седа и Авк-а

Постоји само толико што можете објаснити у једном чланку. Али надам се да сам илустровао колико су неизмерно снажни Сед и Авк. Једноставно речено, они су електрана за обраду текста.

Па, зашто би се бринула? Па, поред чињенице да никад не знате када требате да направите предвидљиве, понављајуће измене у тексту са текстом, Сед и Авк су одлични за рашчлањивање датотека дневника. Ово је посебно корисно када покушавате да отклоните проблем на вашем ЛАМП серверу Пријављени сте за само ССХ веб хостинг? Не брините - лако инсталирајте било који веб софтверНе знате прву ствар о раду Линука путем његове моћне командне линије? Не брини више. Опширније или ако прегледате ваше евиденције приступа да видите да ли је ваш сервер хакован.

Да ли сте пронашли занимљиву употребу за Сед и Авк? Постоје ли неки други услужни програми за Линук за које сматрате да су недовољно цењени? Јавите ми у коментарима испод и разговараћемо.

Маттхев Хугхес је програмер и писац софтвера из Ливерпула, Енглеска. Ретко се нађе без шољице јаке црне кафе у руци и апсолутно обожава свој Мацбоок Про и свој фотоапарат. Његов блог можете прочитати на http://www.matthewhughes.co.uk и пратите га на твиттеру на @маттхевхугхес.