Tālāk ir ietverti daži scenāriji, kuros var būt nepieciešama atstarpju noņemšana:
- Lai formatētu avota kodu
- Lai notīrītu datus
- Lai vienkāršotu komandrindas izvades
Ja failā ir tikai dažas rindiņas, atstarpes var noņemt manuāli. Bet failam, kas satur simtiem līniju, būs grūti manuāli noņemt visas atstarpes. Šim nolūkam ir pieejami dažādi komandrindas rīki, tostarp sed, awk, cut un tr. Starp šiem rīkiem awk ir viena no spēcīgākajām komandām.
Kas ir Awk?
Awk ir spēcīga un noderīga skriptu valoda, ko izmanto teksta manipulācijās un ziņojumu sagatavošanā. AWK komanda ir saīsināta, izmantojot iniciāļus katram cilvēkam (Aho, Veinbergers un Kernigans), kurš to izstrādāja. Awk ļauj definēt mainīgos, skaitliskās funkcijas, virknes un aritmētiskos operatorus; izveidot formatētus pārskatus; un vēl.
Šajā rakstā ir izskaidrota komandas awk izmantošana atstarpju apgriešanai. Pēc šī raksta izlasīšanas jūs uzzināsiet, kā izmantot komandu awk, lai veiktu šādas darbības:
- Apgrieziet visas faila atstarpes
- Apgrieziet vadošās atstarpes
- Apgrieziet aizmugures atstarpes
- Apgrieziet gan vadošās, gan aizmugurējās atstarpes
- Nomainiet vairākas atstarpes ar vienu atstarpi
Šajā rakstā norādītās komandas tika veiktas ar Ubuntu 20.04 Focal Fossa sistēma. Tomēr tās pašas komandas var veikt arī citos Linux izplatījumos. Šajā rakstā esošo komandu izpildīšanai mēs izmantosim noklusējuma lietojumprogrammu Ubuntu Terminal. Jūs varat piekļūt terminālim, izmantojot īsinājumtaustiņu Ctrl + Alt + T.
Demonstrācijas nolūkos mēs izmantosim parauga failu ar nosaukumu “paraugs.txt.”, Lai veiktu šajā rakstā sniegtos piemērus.
Skatīt visas faila atstarpes
Lai skatītu visus failā esošos atstarpes, ievadiet komandas cat izvadi uz komandu tr šādi:
$ kaķu paraugs.txt | tr "" "*" | tr "\ t" "&"Šī komanda aizstās visas atstarpes dotajā failā ar rakstzīmi (*). Pēc šīs komandas ievadīšanas jūs varēsit skaidri redzēt, kur failā atrodas visas atstarpes (ieskaitot gan vadošās, gan aizmugurējās atstarpes).
* * Rakstzīmes nākamajā ekrānuzņēmumā parāda, kur parauga failā atrodas visas atstarpes. Viens * apzīmē vienu atstarpi.
Apgrieziet visas atstarpes
Lai noņemtu visas atstarpes no faila, ievadiet komandu out of cat komandai awk šādi:
$ kaķu paraugs.txt | awk 'gsub (/ /, ""); print 'Kur
- gsub (apzīmē globālo aizstāšanu) ir aizstāšanas funkcija
- / / attēlo atstarpi
- “” neko nepārstāv (sagrieziet virkni)
Iepriekš minētā komanda aizstāj visas atstarpes (/ /) ar neko (“”).
Nākamajā ekrānuzņēmumā varat redzēt, ka visas atstarpes, ieskaitot priekšējās un aizmugurējās atstarpes, ir noņemtas no izvades.
Apgrieziet vadošās atstarpes
Lai no faila noņemtu tikai vadošās atstarpes, ievadiet komandu out of cat komandai awk šādi:
$ kaķu paraugs.txt | awk 'sub (/ ^ [\ t] + /, ""); print 'Kur
- apakšnodaļa ir aizstāšanas funkcija
- ^ apzīmē virknes sākumu
- [\ t]+ apzīmē vienu vai vairākas atstarpes
- “” neko nepārstāv (sagrieziet virkni)
Iepriekš minētā komanda aizstāj vienu vai vairākas atstarpes virknes sākumā (^ [\ t] +) ar neko (“”), lai noņemtu vadošās atstarpes.
Nākamajā ekrānuzņēmumā varat redzēt, ka visas vadošās atstarpes ir noņemtas no izvades.
Varat izmantot šo komandu, lai pārbaudītu, vai ar iepriekš minēto komandu ir noņemtas galvenās atstarpes:
$ kaķu paraugs.txt | awk 'sub (/ ^ [\ t] + /, ""); drukāt '| tr "" "*" |tr "\ t" "&"
Zemāk redzamajā ekrānuzņēmumā ir skaidri redzams, ka ir noņemtas tikai galvenās atstarpes.
Apgrieziet aizmugures atstarpes
Lai no faila noņemtu tikai pēdējās atstarpes, ievadiet komandu out of cat komandai awk šādi:
$ kaķu paraugs.txt | awk 'sub (/ [\ t] + $ /, ""); print 'Kur
- apakšnodaļa ir aizstāšanas funkcija
- [\ t]+ apzīmē vienu vai vairākas atstarpes
- $ apzīmē virknes beigas
- “” neko nepārstāv (sagriež virkni)
Iepriekš minētā komanda aizstāj vienu vai vairākas atstarpes virknes beigās ([\ t] + $) ar neko (“”), lai noņemtu pēdējās atstarpes.
Varat izmantot šo komandu, lai pārbaudītu, vai ar iepriekšminēto komandu ir noņemtas pēdējās atstarpes:
$ kaķu paraugs.txt | awk 'sub (/ [\ t] + $ /, ""); drukāt '| tr "" "*" | tr "\ t" "&"No zemāk redzamā ekrānuzņēmuma ir skaidri redzams, ka aizmugures atstarpes ir noņemtas.
Apgrieziet gan vadošās, gan aizmugurējās atstarpes
Lai no faila noņemtu gan vadošo, gan aizmugurējo atstarpi, ievadiet komandu out of cat komandai awk šādi:
$ kaķu paraugs.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); print 'Kur
- gsub ir globāla aizstāšanas funkcija
- ^ [\ t]+ pārstāv vadošās atstarpes
- [\ t] + $ apzīmē beigu atstarpes
- “” neko nepārstāv (sagrieziet virkni)
Iepriekš minētā komanda aizstāj gan sākuma, gan aizmugures atstarpes (^ [\ t]+ [\ t] + $) un nekas (“”) tos nevar noņemt.
Lai noteiktu, vai ar iepriekšminēto komandu failā ir noņemtas gan galvenās, gan aiz pēdējās atstarpes, izmantojiet šo komandu:
$ kaķu paraugs.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); drukāt '|tr "" "*" | tr "\ t" "&"
No zemāk redzamā ekrānuzņēmuma ir skaidri redzams, ka ir noņemtas gan priekšējās, gan aizmugurējās atstarpes un paliek tikai atstarpes starp virknēm.
Nomainiet vairākas atstarpes ar vienu atstarpi
Lai aizstātu vairākas atstarpes ar vienu atstarpi, ievadiet komandu cat no cat komandai awk šādi:
$ kaķu paraugs.txt | awk 'gsub (/ [] + /, ""); print 'Kur:
- gsub ir globāla aizstāšanas funkcija
- []+ apzīmē vienu vai vairākas atstarpes
- “” apzīmē vienu atstarpi
Iepriekš minētā komanda aizstāj vairākas atstarpes ([] +) ar vienu atstarpi (““).
Varat izmantot šo komandu, lai pārbaudītu, vai iepriekš minētā komanda ir aizstājusi vairākas atstarpes ar atstarpēm:
$ kaķu paraugs.txt | awk 'sub (/ [\ t] + $ /, ""); drukāt '| | tr "" "*" | tr "\ t" "&"Mūsu parauga failā bija vairākas atstarpes. Kā redzat, izlasē ir vairākas atstarpes.txt fails tika aizstāts ar vienu atstarpi, izmantojot komandu awk.
Lai apgrieztu atstarpes tikai tajās rindiņās, kurās ir noteikts raksturs, piemēram, komats, kols vai semikols, izmantojiet komandu awk ar -F ievades atdalītājs.
Piemēram, zemāk parādīts mūsu parauga fails, kurā katrā rindā ir atstarpes.
Lai noņemtu atstarpes tikai no tām rindām, kurās ir komats (,), komanda būtu šāda:
$ kaķu paraugs.txt | awk -F, '/, / gsub (/ /, ""); print 'Kur (-F,) ir ievades lauka atdalītājs.
Iepriekš minētā komanda noņems un parādīs atstarpes tikai no tām rindām, kurās tajās ir norādītais rakstzīme (,). Pārējās līnijas paliks neskartas.
Secinājums
Tas ir viss, kas jums jāzina, lai apgrieztu datos atstarpes, izmantojot komandu awk. Atstarpes atstarpes noņemšana no datiem var būt nepieciešama vairāku dažādu iemeslu dēļ. Neatkarīgi no iemesla, jūs viegli varat apgriezt visus atstarpes savos datos, izmantojot šajā rakstā aprakstītās komandas. Jūs pat varat apgriezt priekšējās vai aizmugurējās atstarpes, apgriezt gan priekšējās, gan aizmugurējās atstarpes un aizstāt vairākas atstarpes ar vienu atstarpi ar komandu awk.