sed

Sed Noņemt atstarpi

Sed Noņemt atstarpi
Atstarpju noņemšana dokumentos ir būtisks formatēšanas solis, kas nepieciešams, lai uzlabotu teksta vispārējo izkārtojumu un nodrošinātu, ka dati ir tīri un kārtīgi. Tas palīdz saglabāt tikai nepieciešamos datus un atbrīvoties no nevajadzīgām priekšējām un aizmugurējām atstarpēm. Tālāk ir minēti daži scenāriji, kuros, iespējams, būs jānoņem atstarpes:

Ja mēs runājam par vadošajām atstarpēm, tās ir salīdzinoši viegli pamanīt tāpat kā teksta sākumā. Tomēr nav viegli pamanīt aizmugures atstarpes. Tas pats attiecas uz dubultām atstarpēm, kuras arī dažreiz ir grūti pamanāmas. Tas viss kļūst sarežģītāk, ja no dokumenta, kas satur tūkstošiem līniju, ir jānoņem visi tie vadošie un aizmugurējie atstarpes.

Lai noņemtu atstarpes no dokumenta, varat izmantot dažādus rīkus, piemēram, awk, sed, cut un tr. Dažos citos rakstos mēs esam apsprieduši awk izmantošanu atstarpju noņemšanā. Šajā rakstā mēs apspriedīsim sed izmantošanu par atstarpju noņemšanu no datiem.

Jūs uzzināsiet, kā lietot sed, lai:

Mēs palaidīsim komandas Ubuntu 20.04 Fokālais Fossa. Tās pašas komandas varat palaist arī citos Linux izplatījumos. Komandu darbināšanai mēs izmantosim noklusējuma lietojumprogrammu Ubuntu Terminal. Lai atvērtu termināli, izmantojiet īsinājumtaustiņu Ctrl + Alt + T.

Kas ir Sed

Sed (apzīmē straumes redaktoru) ir ļoti spēcīga un ērta utilīta Linux, kas ļauj mums veikt pamata teksta manipulācijas ar ievades straumēm. Tas nav teksta redaktors, bet tas palīdz manipulēt un filtrēt tekstu. Tas saņem ievades straumes un rediģē to saskaņā ar lietotāja norādījumiem un pēc tam izdrukā pārveidoto tekstu ekrānā.

Izmantojot sed, varat:

Izmantojot Sed, lai noņemtu atstarpes

Lai noņemtu atstarpes no teksta, mēs izmantosim šādu sintaksi:

s / REGEXP / aizstājējs / karodziņi

Kur

Regulāras izteiksmes

Daži regulārie izteicieni, kurus mēs šeit izmantosim, ir:

Demonstrācijas nolūkos mēs izmantosim šādu faila paraugu ar nosaukumu “testfile”.

Skatīt visas faila atstarpes

Lai atrastu visas atstarpes failā, ievadiet kaķa komandas izvadi komandai tr šādi:

$ kaķu testfails | tr "" "*" | tr "\ t" "&"

Šī komanda aizstāj visas atstarpes jūsu failā ar simbolu (*), kas atvieglo visu atstarpju atrašanu neatkarīgi no tā, vai tās ir vienas, vairākas, vadošas vai aizmugurīgas atstarpes.

Nākamajā ekrānuzņēmumā varat redzēt, ka atstarpes tiek aizstātas ar simbolu *.

Noņemt visas atstarpes (ieskaitot atstarpes un cilnes)

Dažos gadījumos no datiem ir jānoņem visas atstarpes, t.i.e. vadošais, noslēdzošais un atstarpes starp tekstiem. Šī komanda noņems visus atstarpes no “testa faila”.

$ kaķu testfails | sed -r 's / \ s + // g'

Piezīme: Sed nemaina jūsu failus, ja vien nesaglabājat izvadi failā.

Izeja:

Pēc iepriekš minētās komandas palaišanas parādījās šāda izeja, kas parāda, ka visas atstarpes ir noņemtas no teksta.

Varat arī izmantot šo komandu, lai pārbaudītu, vai visas atstarpes ir noņemtas.

$ kaķu testa fails | sed -r 's / \ s + // g' | tr "" "*" | tr "\ t" "&"

No izejas jūs varat redzēt, ka simbols nav (*), kas nozīmē, ka visas atstarpes ir noņemtas.

Lai noņemtu visus atstarpes, bet tikai no noteiktas rindas (pieņemsim, ka 2. rindiņa), varat izmantot šādu komandu:

$ kaķu testfails | sed -r '2s / \ s + // g'

Noņemt visas vadošās atstarpes (ieskaitot atstarpes un cilnes)

Lai noņemtu visas atstarpes no katras rindas sākuma (vadošās atstarpes), izmantojiet šādu komandu:

$ kaķu testfails | sed 's / ^ [\ t] * //'

Izeja:

Pēc iepriekš minētās komandas palaišanas parādījās šāda izeja, kas parāda, ka visas galvenās atstarpes ir noņemtas no teksta.

Varat arī izmantot šo komandu, lai pārbaudītu, vai visas galvenās atstarpes ir noņemtas:

$ kaķu testfails | sed 's / ^ [\ t] * //' | tr "" "*" | tr "\ t" "&"

No izejas var redzēt, ka rindu sākumā nav (*) simbola, kas pārbauda, ​​vai visas vadošās atstarpes ir noņemtas.

Lai noņemtu vadošās atstarpes tikai no noteiktas rindas (pieņemsim, ka 2. rindiņa), varat izmantot šādu komandu:

$ kaķu testfails | sed '2s / ^ [\ t] * //'

Noņemt visas pēdējās atstarpes (ieskaitot atstarpes un cilnes)

Lai noņemtu visus atstarpes no katras rindas beigām (aiz atstarpēm), izmantojiet šādu komandu:

$ kaķu testfails | sed 's / [\ t] * $ //'

Izeja:

Pēc iepriekš minētās komandas palaišanas parādījās šāda izeja, kas parāda, ka visas teksta atstarpes ir noņemtas no teksta.

Varat arī izmantot šo komandu, lai pārbaudītu, vai visas aizmugures atstarpes ir noņemtas.

$ kaķu testfails | sed 's / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"

No izejas var redzēt, ka rindu beigās nav (*) simbola, kas pārbauda, ​​vai visas aizmugures atstarpes ir noņemtas.

Lai noņemtu pēdējās atstarpes tikai no noteiktas rindas (pieņemsim, ka 2. rindiņa), varat izmantot šādu komandu:

$ kaķu testfails | sed '2s / [\ t] * $ //'

Noņemiet gan vadošās, gan aizmugurējās atstarpes

Lai noņemtu visus atstarpes gan no katras rindas sākuma, gan beigām (t.i.e. gan vadošajās, gan aiz pēdējās atstarpēs), izmantojiet šādu komandu:

$ kaķu testfails | sed 's / ^ [\ t] * //; s / [\ t] * $ //'

Izeja:

Pēc iepriekš minētās komandas izpildes parādījās šāda izeja, kas parāda, ka no teksta ir noņemtas gan priekšā esošās, gan aiz pēdējās atstarpes.

Varat arī izmantot šo komandu, lai pārbaudītu, vai ir noņemtas gan priekšējās, gan aizmugurējās atstarpes.

$ kaķu testfails | sed 's / ^ [\ t] * //; s / [\ t] * $ //' | tr "" "*" | tr "\ t" "&"

No izejas var redzēt, ka līnijas sākumā vai beigās nav (*) simbola, kas pārbauda, ​​vai visas vadošās un aizmugurējās atstarpes ir noņemtas.

Lai noņemtu gan vadošo, gan aizmugurējo atstarpi tikai no konkrētas rindas (pieņemsim, ka 2. rindiņa), varat izmantot šādu komandu:

$ kaķu testfails | sed '2s / ^ [\ t] * //; 2s / [\ t] * $ //'

Vairākas atstarpes aizstājiet ar atsevišķām atstarpēm

Dažos gadījumos vienā faila vietā ir vairākas atstarpes, taču jums ir nepieciešama tikai viena atstarpe. To var izdarīt, aizstājot šīs vairākas atstarpes ar vienu atstarpi, izmantojot sed.

Šī komanda aizstās visas vairākas atstarpes ar vienu atstarpi no katras rindas “testfailā”.

$ kaķu testfails | sed 's / [] \ + / / g'

Izeja:

Pēc iepriekš minētās komandas palaišanas parādījās šāda izeja, kas parāda, ka vairākas atstarpes ir aizstātas ar vienu atstarpi.

Varat arī izmantot šo komandu, lai pārbaudītu, vai vairākas atstarpes tiek aizstātas ar vienu atstarpi:

$ kaķu testfails | sed 's / [] \ + / / g' | tr "" "*" | tr "\ t" "&"

No izejas katrā vietā var redzēt vienoto (*) simbolu, kas pārbauda, ​​vai visi vairāku atstarpju gadījumi ir aizstāti ar vienu atstarpi.

Tātad, tas viss bija par atstarpju noņemšanu no datiem, izmantojot sed. Šajā rakstā jūs uzzinājāt, kā izmantot sed, lai no datiem noņemtu visas atstarpes, noņemtu tikai vadošo vai aizmugurējo atstarpi un noņemtu gan vadošo, gan aizmugurējo atstarpi. Jūs esat arī iemācījušies aizstāt vairākas atstarpes ar vienu atstarpi. Tagad jums būs viegli noņemt atstarpes no faila, kurā ir simtiem vai tūkstošiem līniju.

WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...
Peles kreisā klikšķa poga nedarbojas operētājsistēmā Windows 10
Ja ar klēpjdatoru vai galddatoru izmantojat īpašu peli, bet nedarbojas peles kreisās klikšķa poga kādu iemeslu dēļ operētājsistēmā Windows 10/8/7 šeit...
Rakstot Windows 10, kursors lec vai pārvietojas nejauši
Ja atklājat, ka peles kursors automātiski, nejauši lec vai pārvietojas pats, rakstot Windows klēpjdatorā vai datorā, daži no šiem ieteikumiem var palī...