сед

Примери Басх Седа

Примери Басх Седа
Басх вам омогућава да извршите замену обрасца помоћу променљивог проширења попут ($ вар / паттерн / реплацемент). И тако, да ли сед попут овога (сед -е 'с / паттерн / реплацемент /'). Међутим, има више за седење него за замену образаца у текстуалним датотекама.  Овде ћемо поново открити сед, на пример, са еквивалентним командама и токовима посла који помажу у свакодневним задацима.

Постављање примера сед

Ево кратког водича за подешавање примера, који ћу покушати да не направим превише.

„Речи“ је текстуална датотека која садржи бројеве од 1 до 100. Ако нисте сигурни у наредбу за њено креирање, погледајте Извоз функције за каргс у Басх Екпорт наредби. Никад не знате да би то могло бити на следећем интервјуу за скриптање шкољки.

„Бар“ је текстуална датотека која садржи један ред -.

„Олд-пхп“ је текстуална датотека која садржи редове старог ПХП-а који ће се преломити у пхп7 или новијој верзији. (Савет: ерег)

Имајте на уму да се све горе описане функције могу наћи испод у Ендноте о функцијама за подешавање.

Сед примери са еквивалентним командама

У окружењу командне линије открићете да постоји више решења за дати задатак. Међутим, већином желите да идете путем који даје најмањи отпор. Ево листе примера сед команди са одговарајућим еквивалентним командама, где ће неке бити детаљно обрађене у наставку.

1. Испис случајне линије (еквивалентно сортирању -Р - | глава -1)

сед -н "$ ((РАНДОМ% 100)) п" -

2.Одштампајте последњи ред у датотеци (еквивалентно глави -1 -)

сед -н '$ п' -

3. Одштампајте првих 10 редова у датотеци (еквивалентно глави -н 10 -)

сед '10к' -

4. Одштампајте први ред у датотеци (еквивалентно репу -1 -)

сед -н '1п' -

5. Избришите све инстанце знака (еквивалентно тр -делете '0' -, где је 0 знак који желимо избрисати)

сед -е 'с / 0 // г' -

6. Претвори цсв датотеку у тсв (еквивалентно тр ', "\ т' -)

сед -е 'с /, / \ т / г' -

7.Додати ред у датотеку (еквивалент мачки - -)

сед '$ а ---' -

8. Додавање реда у датотеку (еквивалент мачки - бар)

сед '1и ---' -

9. Одштампајте све редове у датотеци (еквивалент мачки -)

сед -н -е 'п' -

10. Одштампајте линије које одговарају шаблону (еквивалентно греп -е '^ 1' -)

сед -н -е '/ ^ 1 / п' -

11. Избришите линије које одговарају шаблону (еквивалентно греп -в -е '^ 1' -)

сед -е '/ ^ 1 / д' -

12. Дохватите број редова у датотеци (еквивалентно вц -л -)

сед -н -е '$ =' -

13. Запис у датотеку у позадини (еквивалентна команда тее)

сед "в $ 1" -

Пример употребе сед за имплементацију команде тее

Тачно изнад, у позадини је пример са ознаком Напиши у датотеку. Врста звука попут команде тее. Па, јесте. Овде ћемо проширити како имплементирати функцију за замену тее у басх помоћу сед.

Команде

тее ()

тест $ # -ек 1 || повратак;
сед "в $ 1" -

главни ()

сек 10 | тее тен;
мачка десет

главни

Оутпут

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10

Овде ћете видети два пописа целих бројева од 1 до 10. Прва је из наредбе сек. Секунду добијамо из мачке датотеке написане у тее. Знам да је то смешно, али успева!

Пример употребе сед за испис случајне линије у датотеци

Претпоставимо да желимо да одштампамо случајни ред у датотеци користећи басх и мало сед. Можемо ли то? Да ми можемо! Ево како.

Спровести функцију која

  1. Добија број редова у датотеци, Л
  2. Генерише случајни број између 1 и Л, Р
  3. Штампа Р

Функција очекује да ће улазни вод бити споља спојен.

Команде

неки ред ()

функција лц ()

сед -н -е '$ =' -
;
функција принт-лине ()

сед -н -е "$ 1 п" -
;
темп = $ (мктемп);
мачка -> $ темп;
мачка $ темп | линија за испис $ ((СЛУЧАЈНО% $ (мачка $ темп | лц) + 1));
рм $ темп

Пример употребе (1)

сек 100 | _

Излаз (1)

35

Пример употребе (2)

цурл хттпс: // линукхинт.цом / басх_цут_цомманд / --силент | стрип-тагс | нека линија

Погледајте пример испод, користећи сед за уклањање ХТМЛ тагова. Приметите да се пример овер понекад враћа празно за празне редове. Као вежба, може се побољшати.

Коришћење сед за штампање линија у датотеци

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

Команде

линија за испис ()

сед -н "$ 1 п" -

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

Команде

речи | линија за штампу 50

Оутпут

50

у реду. Изгледа добро, али покушајмо нешто што изгледа мало мање тривијално.

Команде

изјавити -кф речи
прогласи -кф принт-лине
сек 1 10 $ (речи | вц -л) | каргс -и басх -ц "речи | линија за испис "

Оутпут

1
11
21
31
41
51
61
71
81
91

у реду. Сад је то више слично! Видите како се сед може користити у басх скрипти за испис било које линије у датотеци.

Сед примери без еквивалентних команди

У окружењу командне линије понекад је пут до решења које даје најмањи отпор сед пут; у супротном, на крају ћете обавити више посла него што је потребно. Неке наредбе могу бити представљене у наставку.

Наредите све редове у скрипти љуске

сед -е 'с / ^ / # /' -
Избриши први ред
сед -е '1д' -
Избриши последњи ред
сед -е '$ д' -
Уметните линију пре линија које одговарају шаблону
сед '/ 0 $ / и ---' -
Уметните линију након линија које одговарају шаблону
сед '/ 0 $ / ---' -
Скините хтмл ознаке
сед -е 'с /<[^>] *.// г ' -
Надоградите ерег на стари пхп код да би се изводио у пхп7 или новијој верзији
сед 'с / ерег (\ ([^,] * \).\ ([^)] * \)./ стрпос (\ 2, \ 1) / г '
Проверите да ли је сед раније од одређене верзије
сед -е 'в 4.5 ' -

Пример сед верзије гранања у басх

Изнад примера постоји линија за проверу да ли је сед ранија од одређене верзије коју можемо користити за примену гранања верзија у басх, што је верујем једноставније од покушаја примене функције за упоређивање бројева верзија из излаза сед -версион. Једина замка је у томе што ако постоји ранија верзија сед која не подржава в команду, онда смо у невољи.

Команде

тест-сед-версион-ат-мост ()
ецхо -н | сед "в $ 1" - 2> / дев / нулл

проба-верзија ()

ецхо -н "Верзија $ 1. у реду. Урадите ";
тест-сед-верзија-највише $ 1 &&
ецхо -н "стари";
истинито
||
ецхо -н "ново"
;
ехо "начин."

главни ()

локални в;
за в у 4.4,5;
урадите
пробна верзија $ в;
Готово

главни

Оутпут

Верзија 4.4. у реду. Уради то на стари начин.
Верзија 4.5. у реду. Уради то на нови начин.

Имајте на уму да је верзија сед на вашем рачунару откуцавањем ових знакова 4.4, што би објаснило горе наведени резултат. Такође, у исто време, најновија верзија гну сед била је 4.7, отприлике 3 године старија од ове коју имам. Моја сед је стара! У ствари, у седмици 4.0.6, параметар је додат команди верзије, тако да ова стратегија ради за било који од наведених најмање в4.0.6, што је попустљиво с обзиром на то да је верзија објављена почетком 2003. године. Ти си добар.

Додатно сам копао, заправо ВЕСТИ читајући најновији изворни код. Верзија 4.6 има нову функцију, -дебуг која избацује скрипту и означава излазне редове. То би вам омогућило да сед скрипте генерисане функцијама у басху преведете у канонски облик. Хладан! Само не заборавите да вам треба сед верзија која се грана у басх. Ту долази до изражаја овај пример.

Пример басх функције помоћу сед за уклањање ХТМЛ тагова

У горњим примерима постоји линија за уклањање ХТМЛ тагова. Убацимо то у басх функцију и помоћу ње уклонимо све ХТМЛ ознаке из последњег чланка који сам написао.

Команде

стрип-тагс ()

сед -е 'с /<[^>] *.// г ' -

цурл хттпс: // линукхинт.цом / басх_цут_цомманд / --силент | стрип-тагови

Не могу рећи да је савршен, али је бар читљив на терминалу.

Примери Сед са радним токовима: Пример радног тока: безбедно замените све користећи финд, греп и сед

Сигурно је рећи да су промене направљене коришћењем сед са опцијом -и неповратне. То је, уколико нисте потпуно сигурни који текст треба заменити, вероватно ћете добити један знак мање од предвиђеног. Због тога ћемо у овом примеру користити сед у току рада како бисмо безбедно заменили текст у свим датотекама које сте изабрали.

Процес рада

  1. наћи
  2. греп
  3. сед
наћи

Овде ћете одабрати датотеке које ће бити замењене. Предлажем употребу наредбе у следећим редовима:

пронађи -тип ф -име | греп -в -е | каргс -и…

На пример, можда ћете желети да ограничите датотеке да замене ПХП датотеке изузимајући директоријуме гит спремишта на следећи начин.

пронађи -тип ф -име \ *.пхп | греп -в -е '.гит '| каргс -и…

Прочитајте више о наредби каргс у басху.

греп

Даље, покушаћемо да ускладимо неки_ образац у датотекама одабраним на следећи начин. Имајте на уму да, пошто користимо опцију -о за греп, излаз ће приказати подударни низ само ако постоји.

пронађи -тип ф -име \ *.пхп | греп -в -е '.гит '|
каргс -и греп -е неки_ образац -о

Наредба изнад треба да врати листу низова који се подударају са соме_паттерн.

сед

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

пронађи -тип ф -име \ *.пхп | греп -в -е '.гит '|
каргс -и сед -и -е с / неки_ образац / замена / г

Команда греп постаје сед -и и опција -о је уклоњена. Ето ти га.

Сада можете претходно проверити које ће жице бити замењене у сед уместо да тестирате своју срећу.

Завршне белешке о опцијама коришћеним у примерима

Ево листе опција коришћених у седмим примерима који су укратко разматрани.

Опција Опис
Измените на месту. Ако је улаз датотека (која није у цевовод), резултат израза ће заменити садржај датотеке.

Сед прихвата један

нпр.) сед -н…

-е означава израз. Његов параметар је израз у сед језику.

Сед прихвата многе

нпр.) сед -е 'екпр1' -е 'екпр2' ..

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

нпр.) сед -н…

За више доступних опција сед, погледајте сед -хелп

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

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

Завршна белешка на пратећем - у примерима еквивалентних команди

У случају да се питате шта се дешава са знаком у примеру, ова напомена је за вас. Додао сам знак - након већине наредби у примерима како бих наговестио да очекујемо да улаз буде примљен кроз цев. То је,

мачка нека датотека | сортирај -Р - | глава -1

Међутим, када је присутна команда са леве стране цеви, наговештај можемо изоставити на следећи начин.

мачка нека датотека | сортирај -Р | глава -1

То је оно што се догађало са знаком - после наредби у примерима.

Завршне белешке о функцијама за подешавање

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

Команде

речи ()

наредних 100

трака ()

одјек ---

олд-пхп ()

ецхо 'ерег ($ УА, "Боттибот")'

Суштина

Уживао сам у писању примера Баш сед и чак сам успут покупио неколико додатних трикова. Сед је моћан услужни програм командне линије и изражајан језик за манипулисање текстуалним датотекама. Ако сте волели да учите о седу, не брините да још увек има још много тога што треба додирнути. Сед он.

Инсталирајте најновији Долпхин Емулатор за Гамецубе & Вии на Линук
Долпхин Емулатор вам омогућава да играте изабране игре Гамецубе и Вии на Линук Персонал Цомпутерс (ПЦ). Долпхин Емулатор је слободно доступан и емула...
Како се користи ГамеЦонкуерор Цхеат Енгине у Линуку
Чланак покрива водич о коришћењу ГамеЦонкуерор варалице у Линуку. Многи корисници који играју игре на Виндовс-у често користе апликацију „Цхеат Енгине...
Најбољи емулатори играће конзоле за Линук
Овај чланак ће навести популарни софтвер за емулацију играће конзоле доступан за Линук. Емулација је слој компатибилности софтвера који опонаша хардве...