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 ParoleMd. 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.