Awk

Cilnes atdalītā faila parsēšana, izmantojot 'awk'

Cilnes atdalītā faila parsēšana, izmantojot 'awk'

Ar cilni atdalītā failā 'tab' tiek izmantots kā atdalītājs. Šāda veida teksta fails ir izveidots, lai strukturētā formātā saglabātu dažāda veida teksta datus.  Lai parsētu šāda veida failus, Linux pastāv dažādi komandu veidi.  Komanda 'awk' ir viens no veidiem, kā parsēt ar tabulējumu norobežotu failu dažādos veidos. Šajā apmācībā ir parādīts komandas “awk” izmantojums, lai lasītu ar tabulām norobežotu failu.

Izveidojiet ar tabulām atdalītu failu:

Izveidojiet teksta failu ar nosaukumu lietotājiem.txt ar šādu saturu, lai pārbaudītu šīs apmācības komandas. Šajā failā ir lietotāja vārds, e-pasts, lietotājvārds un parole.

lietotājiem.txt

Vārds E-pasts Lietotājvārds Parole
Md. Robins [aizsargāts ar e-pastu] robin89 563425
Nila Hasana [aizsargāta ar e-pastu] nila78 245667
Mirza Abbas [aizsargāts ar e-pastu] mirza23 534788
Aornobs Hasans [aizsargāts ar e-pastu] arnob45 778473
Nuhas Ahsan [aizsargāts ar e-pastu] nuhas34 563452

1. piemērs: izdrukājiet ar tabulējumu atdalītā faila otro kolonnu, izmantojot opciju -F

Ar komandu “sed” tiks izdrukāta tabulas atdalītā teksta faila otrā kolonna. Lūk, "-F" opciju izmanto, lai definētu faila lauka atdalītāju.

$ kaķu lietotāji.txt
$ awk -F '\ t' 'print $ 2' lietotāji.txt

Pēc komandu palaišanas parādīsies šāda izeja. Faila otrajā kolonnā ir lietotāja e-pasta adreses, kas tiek rādītas kā izvade.

2. piemērs: izdrukājiet faila pirmo kolonnu, izmantojot ar mainīgo FS

Ar komandu “sed” tiks izdrukāta tabulas atdalītā teksta faila pirmā kolonna. Šeit, FS Mainīgais (Field Separator) tiek izmantots, lai definētu faila lauku atdalītāju.

$ kaķu lietotāji.txt
$ awk 'print $ 1' FS = '\ t' lietotāji.txt

Pēc komandu palaišanas parādīsies šāda izeja. Faila pirmajā kolonnā ir lietotāja vārdi, kas tiek parādīti kā izvade.

3. piemērs: izdrukājiet ar tabulējumu atdalīta faila trešo kolonnu ar formatējumu

Ar komandu “sed” tiks izdrukāta tabulētā atdalītā teksta faila trešā kolonna ar formatējumu, izmantojot FS mainīgais un printf. Lūk, FS mainīgais tiek izmantots, lai definētu faila lauka atdalītāju.

$ kaķu lietotāji.txt
$ awk 'BEGIN FS = "\ t" printf "% 10s \ n", $ 3 lietotāji.txt

Pēc komandu palaišanas parādīsies šāda izeja. Faila trešajā kolonnā ir šeit iespiests lietotājvārds.

4. piemērs: izdrukājiet trešās un ceturtās slejas atdalītā faila kolonnas, izmantojot OFS

OFS (Output Field Separator) tiek izmantots, lai izvadei pievienotu lauku atdalītāju. Šāda komanda “awk” sadalīs faila saturu, pamatojoties uz cilnes (\ t) atdalītāju, un izdrukās 3. un 4. kolonnu, izmantojot atdalītāju cilni (\ t).

$ kaķu lietotāji.txt
$ awk -F "\ t" 'OFS = "\ t" print $ 3, $ 4> ("izeja.txt ") 'lietotāji.txt
$ kaķu izlaide.txt

Pēc iepriekš minēto komandu izpildīšanas parādīsies šāda izeja. 3. un 4. kolonnā ir šeit iespiests lietotājvārds un parole.

5. piemērs: aizstājiet faila saturu, kas atdalīts ar tabulām

sub () funkcija tiek izmantota 'awk komandai aizstāšanai. Sekojošā komanda “awk” meklēs skaitli 45 un aizstās ar skaitli 90, ja failā ir meklēšanas numurs. Pēc aizstāšanas faila saturs tiks saglabāts izvadē.txt fails.

$ kaķu lietotāji.txt
$ awk -F "\ t" 'sub (/ 45 /, 90); print' lietotāji.txt> izvade.txt
$ kaķu izlaide.txt

Pēc iepriekš minēto komandu izpildīšanas parādīsies šāda izeja. Rezultāts.Txt fails parāda mainīto saturu pēc aizstājēja lietošanas. Šeit ir mainīts 5. rindas saturs, un 'arnob45' tiek mainīts uz 'arnob90'.

6. piemērs: pievienojiet virkni katra ar tabulējumu atdalīta faila rindas sākumā

Turpmāk komandu “awk”, opciju “-F” izmanto, lai sadalītu faila saturu, pamatojoties uz cilni (\ t). OFS ir izmantojis komatu (,) kā lauka atdalītāju izvadā. funkcija sub () tiek izmantota, lai pievienotu virkni '- →' katras izejas rindas sākumā.

$ kaķu lietotāji.txt
$ awk -F "\ t" 'OFS = ","; sub (/ ^ /, "---->"); drukāt $ 1, $ 2, $ 3' lietotājus.txt

Pēc iepriekš minēto komandu izpildīšanas parādīsies šāda izeja. Katru lauka vērtību atdala komats (,), un katras rindas sākumā tiek pievienota virkne.

7. piemērs: aizstājiet ar tabulēšanu atdalīta faila vērtību, izmantojot funkciju gsub ()

Funkciju gsub () globālajā aizstāšanā izmanto komandā 'awk'. Visas faila virknes vērtības aizstās vietu, kur atbilst meklēšanas modelis. Galvenā atšķirība starp funkcijām sub () un gsub () ir tāda, ka sub () funkcija pārtrauc aizvietošanas uzdevumu pēc pirmās atbilstības atrašanas, un funkcija gsub () faila beigās meklē modeli aizstāšanai. Sekojošā komanda awk failā visā pasaulē meklēs vārdus 'nila' un 'Mira' un visus gadījumus aizstās ar tekstu 'Nederīgs nosaukums', kur meklējamais vārds sakrīt.

$ kaķu lietotāji.txt
$ awk -F '\ t' 'gsub (/ nila | Mira /, "Nederīgs nosaukums"); print 'lietotāji.txt

Pēc iepriekš minēto komandu izpildīšanas parādīsies šāda izeja. Vārds 'nila' faila 3. rindā pastāv divas reizes, un izvadē tas ir aizstāts ar vārdu 'Nederīgs nosaukums'.

8. piemērs: formatēta satura izdrukāšana no faila, kas atdalīts ar tabulām

Ar komandu “awk” tiks izdrukāta faila pirmā un otrā kolonna ar formatējumu, izmantojot printf. Izejā tiks parādīts lietotāja vārds, iekavās iekļaujot e-pasta adresi.

$ kaķu lietotāji.txt
$ awk -F '\ t' 'printf "% s (% s) \ n", $ 1, $ 2' lietotāji.txt

Pēc iepriekš minēto komandu izpildīšanas parādīsies šāda izeja.

Secinājums

Jebkuru ar tabulām atdalītu failu var viegli parsēt un izdrukāt ar citu atdalītāju, izmantojot komandu 'awk'. Cilnē atdalīto failu parsēšanas un dažādu formātu drukāšanas veidi ir parādīti šajā apmācībā, izmantojot vairākus piemērus. Šajā apmācībā ir paskaidrots arī sub () un gsub () funkciju izmantošana komandā 'awk', lai aizstātu tabulētā atdalītā faila saturu. Es ceru, ka šī apmācība palīdzēs lasītājiem viegli parsēt ciļņu atdalīto failu pēc tam, kad pareizi apmācīti šīs apmācības piemēri.

How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Izmantojot X-Mouse Button Control, atšķirīgi mainiet peles pogas atšķirīgai programmatūrai
Varbūt jums ir nepieciešams rīks, kas varētu mainīt peles vadību ar katru lietoto lietojumprogrammu. Ja tas tā ir, varat izmēģināt lietojumprogrammu a...
Microsoft Sculpt Touch bezvadu peles apskats
Es nesen lasīju par Microsoft Sculpt Touch bezvadu pele un nolēma to nopirkt. Pēc kāda laika izmantošanas es nolēmu dalīties savā pieredzē ar to. Šo b...