Сед Замените нови ред са размаком

Sed Zamenite Novi Red Sa Razmakom



У УНИКС/Линук-у, наредба сед је наменски алат за уређивање стримова. Може да обавља различите операције на текстуалном току, као што су претраживање, проналажење и замена и уметање/брисање. Углавном, међутим, сед се користи за проналажење и замену текстуалног садржаја.

У овом водичу ћемо приказати замену нових редова размаком користећи сед.

Коришћење сед-а за замену текста

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







$ сед -е 'с///'

Погледајте следећу команду:



$ ецхо 'брза смеђа лисица' | сед -е 'с/брзо/брзо/г'



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





Замена нових редова са размаком

За демонстрацију, направио сам следећу текстуалну датотеку тест.ткт са неколико лажних садржаја:

$ цат тест.ткт



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

$ сед -е 'с/\н/ /г' тест.ткт

Међутим, то није функционисало како се очекивало. Да бисмо постигли овај циљ, потребне су нам неке додатне опције. Погледајте следећу команду:

$ сед -е ':а;Н;$!ба;с/\н/ /г' тест.ткт

Команда сед има више секција; сваки означава одређени задатак:

  • :а: Прави ознаку 'а'
  • Н: Додаје следећу линију у простор за образац
  • $!ба: Ако није последњи ред, враћа се на ознаку 'а'
  • с/\н/ /г: Проналази и замењује нови ред (\н) размаком (/ /). Образац се подудара глобално (/г)

Команда сед се креће кроз кораке док не дође до последњег реда, замењујући све \н знакове размаком.

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

$ сед -з -е 'с/\н/ /г' тест.ткт

Алтернативе Метходс

Иако сед може добро да уради задатак, постоје неки алтернативни алати. У овом одељку ћемо укратко испитати неколико њих.

За следећи пример, можемо користити команду тр да заменимо нови ред са размаком на једноставан начин:

$ тр '\н' ' ' < тест.ткт

Такође можемо користити перл да обавимо посао. Следећа синтакса је такође слична оној коју смо користили са сед (али поједностављена):

$ перл -п -е 'с/\н/ /' тест.ткт

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

$ пасте -с -д ' ' тест.ткт

Слично сед-у, Линук долази са још једним алатом авк. Слично сед-у, он такође може да изврши неке напредне замене на улазу. За нашу сврху, користите следећу авк команду:

$ авк 1 ОРС=' ' тест.ткт

Закључак

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

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