Awk

Awk Trim razmak

Awk Trim razmak
Kao programer, možda ćete morati raditi s različitim datotekama za pohranu i manipulaciju podacima. Jedan osnovni zadatak manipulacije datotekama uključuje uklanjanje razmaka u datotekama. Razmaci se sastoje od razmaka, praznih redaka, nbsp i kartica. Programeri često trebaju ukloniti razmake kako bi se pohranili samo potrebni podaci i nepotrebni razmaci mogli ukloniti. Razmaci mogu biti vodeći (na početku retka) ili prateći (na kraju retka) razmaci.

Slijedi nekoliko scenarija u kojima bi moglo biti potrebno uklanjanje razmaka:

Moguće je ručno ukloniti razmake ako datoteka sadrži samo nekoliko redaka. Ali, za datoteku koja sadrži stotine redaka, tada će biti teško ručno ukloniti sve razmake. U tu svrhu dostupni su razni alati naredbenog retka, uključujući sed, awk, cut i tr. Među tim alatima awk je jedna od najmoćnijih naredbi.

Što je Awk?

Awk je moćan i koristan skriptni jezik koji se koristi u manipulaciji tekstom i generiranju izvještaja. Naredba awk skraćena je pomoću inicijala svih ljudi (Aho, Weinberger i Kernighan) koji su je razvili. Awk omogućuje definiranje varijabli, numeričkih funkcija, nizova i aritmetičkih operatora; stvoriti formatirana izvješća; i više.

Ovaj članak objašnjava upotrebu naredbe awk za obrezivanje razmaka. Nakon čitanja ovog članka naučit ćete kako pomoću naredbe awk izvršiti sljedeće:

Naredbe u ovom članku izvršene su na Ubuntu 20.04 Focal Fossa sustav. Međutim, iste naredbe mogu se izvoditi i na drugim Linux distribucijama. Za pokretanje naredbi u ovom članku koristit ćemo zadanu aplikaciju Ubuntu Terminal. Terminalu možete pristupiti pomoću tipkovne prečice Ctrl + Alt + T.

U demonstracijske svrhe koristit ćemo datoteku uzorka nazvanu „sample.txt.”Za izvođenje primjera iz ovog članka.

Pogledajte sve razmake u datoteci

Da biste vidjeli sve razmake prisutne u datoteci, usmjerite izlaz naredbe cat na naredbu tr, kako slijedi:

$ mačka uzorak.txt | tr "" "*" | tr "\ t" "&"

Ova će naredba zamijeniti sve razmake u datoj datoteci znakom (*). Nakon unosa ove naredbe moći ćete jasno vidjeti gdje su svi bijeli prostori (uključujući vodeće i prateće bijele prostore) prisutni u datoteci.

Znakovi * na sljedećem snimku zaslona prikazuju gdje su svi razmaci prisutni u datoteci uzorka. Pojedinačni * predstavlja jedan razmak.

Izrežite sve razmake

Da biste uklonili sve razmake iz datoteke, prenesite naredbu out of cat u naredbu awk, kako slijedi:

$ mačka uzorak.txt | awk 'gsub (/ /, ""); ispis

Gdje

Gornja naredba zamjenjuje sve razmake (/ /) ničim (“”).

Na sljedećem snimku zaslona možete vidjeti da su svi razmaci, uključujući vodeći i prateći razmak, uklonjeni iz rezultata.

Izrežite vodeće razmake

Da biste iz datoteke uklonili samo vodeće razmake, prenesite naredbu out of cat u naredbu awk, kako slijedi:

$ mačka uzorak.txt | awk 'pod (/ ^ [\ t] + /, ""); ispis '

Gdje

Gornja naredba zamjenjuje jedan ili više razmaka na početku niza (^ [\ t] +) ničim (“”) za uklanjanje vodećih razmaka.

Na sljedećem snimku zaslona možete vidjeti da su svi vodeći razmaci uklonjeni iz rezultata.

Sljedećom naredbom možete provjeriti je li gornja naredba uklonila vodeće razmake:

$ mačka uzorak.txt | awk 'pod (/ ^ [\ t] + /, ""); ispis '| tr "" "*" |
tr "\ t" "&"

Na snimci zaslona u nastavku jasno je vidljivo da su uklonjeni samo vodeći razmaci.

Trim prateći razmaci

Da biste iz datoteke uklonili samo prateće razmake, prenesite naredbu out of cat u naredbu awk, kako slijedi:

$ mačka uzorak.txt | awk 'sub (/ [\ t] + $ /, ""); ispis

Gdje

Gornja naredba zamjenjuje jedan ili više razmaka na kraju niza ([\ t] + $) ničim ("") za uklanjanje pratećih razmaka.

Sljedećom naredbom možete provjeriti je li gornja naredba uklonila prateće razmake:

$ mačka uzorak.txt | awk 'pod (/ [\ \ t] + $ /, ""); ispis '| tr "" "*" | tr "\ t" "&"

Sa donje slike zaslona jasno je vidljivo da su uklonjeni razmaci koji su zaostali.

Izrežite vodeći i prateći razmak

Da biste uklonili i vodeći i prateći razmak iz datoteke, prenesite naredbu out of cat u naredbu awk, kako slijedi:

$ mačka uzorak.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); ispis '

Gdje

Gornja naredba zamjenjuje i početni i zadnji prostor (^ [\ t]+ [\ t] + $) bez ičega ("") za njihovo uklanjanje.

Da biste utvrdili je li gornja naredba uklonila i vodeći i prateći razmak u datoteci, upotrijebite sljedeću naredbu:

$ mačka uzorak.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); ispis '|
tr "" "*" | tr "\ t" "&"

Iz donjeg snimka zaslona jasno je vidljivo da su uklonjeni i vodeći i prateći razmaci, a ostali su samo razmaci između žica.

Zamijenite više prostora s jednim razmakom

Da biste zamijenili više razmaka s jednim razmakom, prenesite naredbu out of cat u naredbu awk, kako slijedi:

$ mačka uzorak.txt | awk 'gsub (/ [] + /, ""); ispis '

Gdje:

Gornja naredba zamjenjuje više razmaka ([] +) s jednim razmakom (““).

Sljedećom naredbom možete provjeriti je li gornja naredba zamijenila više prostora razmacima:

$ mačka uzorak.txt | awk 'sub (/ [\ t] + $ /, ""); ispis '| | tr "" "*" | tr "\ t" "&"

U našoj datoteci uzorka bilo je više razmaka. Kao što vidite, više razmaka u uzorku.txt datoteka je zamijenjena jednim praznim prostorom pomoću naredbe awk.

Da biste obrezali razmake samo u onim linijama koje sadrže određeni znak, poput zareza, dvotočke ili dvotačke, upotrijebite naredbu awk s -F ulazni separator.

Na primjer, dolje je prikazana naša ogledna datoteka koja sadrži razmake u svakom retku.

Da biste uklonili razmake samo iz redaka koji sadrže zarez (,), naredba bi bila sljedeća:

$ mačka uzorak1.txt | awk -F, '/, / gsub (/ /, ""); ispis

Gdje (-F,) je separator ulaznog polja.

Gornja naredba uklonit će i prikazati samo razmake iz redaka koji u njima sadrže navedeni znak (,). Ostatak redaka ostat će nepromijenjen.

Zaključak

To je sve što trebate znati kako biste izrezali razmake u podacima pomoću naredbe awk. Uklanjanje razmaka iz vaših podataka može biti potrebno iz nekoliko različitih razloga. Bez obzira na razlog, lako možete izrezati sve razmake u podacima pomoću naredbi opisanih u ovom članku. Možete čak i obrezati vodeće ili prateće razmake, obrezati vodeće i prateće razmake, a više razmaka zamijeniti jednim razmakom naredbom awk.

Korisni alati za Linux igrače
Ako volite igrati igre na Linuxu, velika je vjerojatnost da ste možda koristili aplikacije i uslužne programe poput Wine, Lutris i OBS Studio za pobol...
HD Remastered igre za Linux koje ranije nisu imale Linux izdanje
Mnogi programeri i izdavači igara dolaze s HD remasterom starih igara kako bi produžili životni vijek franšize, molimo obožavatelje da zatraže kompati...
Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...