Linux komanda “awk” ir spēcīga utilīta dažādām darbībām ar teksta failiem, piemēram, meklēšanu, aizstāšanu un drukāšanu. To ir viegli izmantot ar tabulas datiem, jo tas automātiski sadala katru rindu laukos vai kolonnās, pamatojoties uz lauku atdalītāju. Strādājot ar teksta failu, kurā ir tabulas dati, un vēlaties izdrukāt konkrētas kolonnas datus, vislabākā iespēja ir komanda 'awk'. Šajā apmācībā mēs parādīsim, kā izdrukāt līnijas vai teksta faila pirmo kolonnu un / vai pēdējo kolonnu.
Izdrukājiet komandas izvades pirmo kolonnu un / vai pēdējo kolonnu
Daudzas Linux komandas, piemēram, komanda 'ls', ģenerē tabulas izvades. Šeit mēs parādīsim, kā izdrukāt pirmo kolonnu un / vai pēdējo kolonnu no komandas 'ls -l' izejas.
1. piemērs: izdrukājiet komandas izvades pirmo kolonnu
Šāda komanda “awk” izdrukās pirmo kolonnu no komandas “ls -l” izejas.
$ ls -l$ ls -l | awk 'print $ 1'
Pēc iepriekš minēto komandu izpildīšanas tiks izveidota šāda izeja.
2. piemērs: izdrukājiet komandas izvades pēdējo kolonnu
Šāda komanda “awk” izdrukās pēdējo kolonnu no komandas “ls -l” izejas.
$ ls -l$ ls -l | awk 'print $ NF'
Pēc iepriekš minēto komandu izpildes tiks izveidota šāda izeja.
3. piemērs: izdrukājiet komandu izejas pirmo un pēdējo kolonnu
Ar komandu 'awk' tiks izdrukāta pirmā un pēdējā kolonna no komandas 'ls -l' izejas.
$ ls -l$ ls -l | awk 'print $ 1, $ NF'
Pēc iepriekš minēto komandu izpildīšanas tiks izveidota šāda izeja.
Izdrukājiet teksta faila pirmo un / vai pēdējo kolonnu
Šeit mēs parādīsim, kā izmantot komandu awk, lai izdrukātu teksta faila pirmo un / vai pēdējo kolonnu.
Izveidojiet teksta failu
Lai sekotu līdzi šai apmācībai, izveidojiet teksta failu ar nosaukumu klientiem.txt ar šādu saturu. Failā ir trīs veidu klienta dati: vārds ar ID, e-pasts un tālruņa numurs. Cilnes rakstzīmi (\ t) izmanto šo vērtību atdalīšanai.
Nosaukums E-pasts TālrunisJonathon Bing - 1001 [aizsargāts ar e-pastu] 01967456323
Mišels Džeksons - 2006. gads [aizsargāts ar e-pastu] 01756235643
Janifers Lopess - 3029 [aizsargāts ar e-pastu] 01822347865
Džons Ābrahāms - 4235 j [aizsargāts ar e-pastu] 01590078452
Mir Sabbir - 2756 [aizsargāts ar e-pastu] 01189523978
4. piemērs: Izdrukājiet faila pirmo kolonnu, neizmantojot lauku atdalītāju
Ja komandā 'awk' netiek izmantots lauku atdalītājs, par noklusējuma lauku atdalītāju tiek izmantota atstarpe. Šāda komanda “awk” izdrukās pirmo kolonnu, izmantojot noklusējuma atdalītāju.
$ kaķu klienti.txt$ awk 'print $ 1' klienti.txt
Pēc iepriekš minēto komandu izpildes tiks izveidota šāda izeja. Ņemiet vērā, ka izvadē tiek parādīts tikai klienta vārds, jo atstarpe tiek lietota kā lauku atdalītājs. Šīs problēmas risinājums ir parādīts nākamajā piemērā.
5. piemērs: Izdrukājiet faila pirmo kolonnu ar atdalītāju
Šeit \ t tiek izmantots kā lauku atdalītājs, lai izdrukātu faila pirmo kolonnu. Opciju '-F' izmanto, lai iestatītu lauka atdalītāju.
$ kaķu klienti.txt$ awk -F '\ t' 'print $ 1' klienti.txt
Pēc iepriekš minēto komandu izpildes tiks izveidota šāda izeja. Faila saturs ir sadalīts trīs kolonnās, pamatojoties uz \ t. Tāpēc klienta vārds un ID tiek drukāts kā pirmā kolonna. Ja vēlaties izdrukāt klienta vārdu bez id, turpiniet nākamo piemēru.
Ja vēlaties izdrukāt klienta vārdu bez id, tad kā lauka atdalītājs jāizmanto “-”. Šāda komanda “awk” klienta vārdu drukās tikai kā pirmo kolonnu.
$ awk -F '-' 'print $ 1' klienti.txt
Pēc iepriekš minēto komandu izpildes tiks izveidota šāda izeja. Izejā ir iekļauti pilni klientu vārdi bez viņu ID.
6. piemērs: izdrukājiet faila pēdējo kolonnu
Ar šādu komandu “awk” tiks izdrukāta pēdējā klientu kolonna.txt. Tā kā komandā netiek izmantots lauka atdalītājs, atstarpe tiks izmantota kā lauka atdalītājs.
$ kaķu klienti.txt$ awk 'print $ NF' klienti.txt
Pēc iepriekš minēto komandu izpildes tiks izveidota šāda izeja. Pēdējā kolonnā ir tālruņu numuri, kā parādīts izvadē.
7. piemērs: izdrukājiet faila pirmo un pēdējo kolonnu
Šī komanda “awk” izdrukās klientu pirmo un pēdējo kolonnu.txt. Šeit cilni (\ t) izmanto kā lauku atdalītāju, lai saturu sadalītu kolonnās. Šeit cilni (\ t) izmanto kā izvades atdalītāju.
$ kaķu klienti.txt$ awk -F "\ t" 'print $ 1 "\ t" $ NF' klienti.txt
Pēc iepriekš minēto komandu izpildīšanas parādīsies šāda izeja. Saturs ir sadalīts trīs kolonnās ar \ t; pirmajā kolonnā ir norādīts klienta vārds un ID, bet otrajā - tālruņa numurs. Pirmā un pēdējā kolonna tiek izdrukāta, izmantojot atdalītāju \ t.
Secinājums
Komandu 'awk' var izmantot dažādos veidos, lai iegūtu pirmo kolonnu un / vai pēdējo kolonnu no jebkuras komandas izejas vai no tabulas datiem. Ir svarīgi atzīmēt, ka komandā ir nepieciešams lauka atdalītājs, un, ja tāds nav paredzēts, tiek izmantota vieta.