SATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print }'
Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print , }'
Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print , }'
Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}
Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print , }'
Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print , } END {print '--COMPLETED--'}'
Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'
Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-english
Šī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-file
The -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print } ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print } '
Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk ' > 50' test.txt
Šī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk ' ~ /Lira/' test.txt
Ja vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txt
Šī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print,,}'
Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }
Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if (>100) print }' test.txt
Jums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action
$ awk '{ if (>100) print; else print }' test.txt
Iepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
ko excel nozīmē tips
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print , , }'
Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412
$ awk 'BEGIN{FS=' '; RS=''} {print ,}' new.txt
Šī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'
Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'
18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{=''; print}' test.txt
Šī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{='';='';print}' test.txt
19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txt
Mēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txt
Pievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txt
Tagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txt
Iepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txt
Es bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length(Mājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 ); }'SATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
$ awk '{ print length(Mājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 ); }' /etc/passwdSATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
Iepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length(Mājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 ) > 10'SATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
$ awk '{ length(Mājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 ) > 5; }' /etc/passwdSATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
Jūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'
Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txt
Ja jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }
Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt
28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ',Mājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 , tolower(SATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
Mājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 )) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ',SATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
Mājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 , tolower(SATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
Mājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 )) }' | shSATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
Pirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'
Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'
Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'
Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'
Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m'Mājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 'x1B[m';next;}{print}'SATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {printMājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 }' /etc/fstabSATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
Šī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print }' /etc/fstab
Tas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print }'
Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. 'Mājas A-Z komandas 40 Praktiska un noderīga awk komanda Linux un BSD AutorsMehedi Hasan InA-Z komandasPiedāvātie 1271 7 ;next}{print}' test.txtSATURS
- Izpratne par AWK programmām
- Praktiski awk komandu piemēri Linux
- 1. Izdrukājiet specifiskus laukus no teksta izvades
- 2. Drukājiet vairākus laukus no teksta izvades
- 3. Izmantojiet BEGIN paziņojumus
- 4. Izmantojiet END paziņojumus
- 5. Meklēšana, izmantojot modeļus
- 6. Izņemiet informāciju no failiem
- 7. Izlasiet AWK skriptu no avota faila
- 8. Iestatiet ievades lauka atdalītāju
- 9. Drukāt informāciju, pamatojoties uz stāvokli
- 10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
- 11. Saskaitiet kopējo ievadīto rindu skaitu
- 12. Iestatiet izvades lauka atdalītāju
- 13. If Construct izmantošana
- 14. If-Else Constructs izmantošana
- 15. Iestatiet lauka platumu
- 16. Iestatiet ierakstu atdalītāju
- 17. Drukas vides mainīgie
- 18. Izlaist dažus laukus no izvades
- 19. Noņemiet tukšās līnijas
- 20. Noņemiet beigu atstarpes
- 21. Pārbaudiet lauku skaitu katrā rindā
- 22. Pārbaudiet pašreizējo faila nosaukumu
- 23. Pārbaudiet apstrādāto ierakstu skaitu
- 24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
- 25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
- 26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
- 27. Aprēķiniet vārdu biežumu
- 28. Pārdēvēt failus, izmantojot AWK
- 29. Izdrukājiet skaitļa kvadrātsakni
- 30. Izdrukājiet skaitļa logaritmu
- 31. Izdrukājiet skaitļa eksponenciālu
- 32. Izveidojiet nejaušus skaitļus, izmantojot AWK
- 33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
- 34. Izdrukājiet failu sistēmas UUID informāciju
- 35. Izdrukājiet Linux kodola attēla versiju
- 36. Pievienojiet rindu numurus pirms rindām
- 37. Izdrukājiet failu pēc satura kārtošanas
- 38. Izdrukājiet rokasgrāmatas lapu
- 39. Izdrukājiet palīdzības lapu
- 40. Informācija par drukas versiju
- Beigu domas
AWK ir spēcīga> pilnvērtīga programmēšanas valoda . AWK savu nosaukumu ieguvis no tā autoru iniciāļiem - Aho, Veinbergera un Kernighana. Komanda awk Linux un citās Unix sistēmās izsauc tulku, kas palaiž AWK skriptus. Nesenās sistēmās pastāv vairākas awk ieviešanas, piemēram, gawk (GNU awk), mawk (Minimal awk) un nawk (New awk). Apskatiet tālāk sniegtos piemērus, ja vēlaties apgūt awk.
Izpratne par AWK programmām
Programmas, kas rakstītas awk, sastāv no noteikumiem, kas ir vienkārši modeļu un darbību pāris. Modeļi ir sagrupēti iekavās {}, un darbības daļa tiek aktivizēta ikreiz, kad awk atrod tekstam atbilstošus tekstus. Lai gan awk tika izstrādāts vienas līnijas rakstīšanai, pieredzējuši lietotāji ar to var viegli rakstīt sarežģītus skriptus.
AWK programmas ir ļoti noderīgas liela mēroga failu apstrādei. Tas identificē teksta laukus, izmantojot speciālās rakstzīmes un atdalītājus. Tā piedāvā arī augsta līmeņa programmēšanas konstrukcijas, piemēram, masīvus un cilpas. Tāpēc ir ļoti iespējams rakstīt stabilas programmas, izmantojot vienkāršu awk.
Praktiski awk komandu piemēri Linux
Administratori parasti izmanto awk datu iegūšanai un ziņošanai kopā ar cita veida failu manipulācijām. Zemāk mēs detalizētāk apspriedām awk. Rūpīgi izpildiet komandas un izmēģiniet tās savā terminālī, lai iegūtu pilnīgu izpratni.
1. Izdrukājiet specifiskus laukus no teksta izvades
Visvairāk plaši izmantotas Linux komandas parādīt savus rezultātus, izmantojot dažādus laukus. Parasti mēs izmantojam Linux izgriešanas komandu, lai no šādiem datiem iegūtu noteiktu lauku. Tomēr zemāk esošā komanda parāda, kā to izdarīt, izmantojot komandu awk.
$ who | awk '{print $1}'Šī komanda parādīs tikai pirmo lauku no komandas who izvades. Tātad jūs vienkārši iegūsit visu pašlaik reģistrēto lietotāju lietotājvārdus. Šeit, $ 1 apzīmē pirmo lauku. Jums ir jāizmanto $ N ja vēlaties iegūt N-to lauku.
2. Drukājiet vairākus laukus no teksta izvades
Awk tulks ļauj mums izdrukāt vēlamo lauku skaitu. Tālāk sniegtajos piemēros ir parādīts, kā iegūt pirmos divus laukus no komandas who izvades.
$ who | awk '{print $1, $2}'Varat arī kontrolēt izvades lauku secību. Šajā piemērā vispirms tiek parādīta otrā sleja, ko izveidojusi komanda who, un pēc tam pirmā kolonna otrajā laukā.
$ who | awk '{print $2, $1}'Vienkārši atstājiet laukā parametrus ( $ N ), lai parādītu visus datus.
3. Izmantojiet BEGIN paziņojumus
BEGIN paziņojums ļauj lietotājiem izvadē izdrukāt zināmu informāciju. To parasti izmanto awk ģenerēto izejas datu formatēšanai. Šī paziņojuma sintakse ir parādīta zemāk.
BEGIN { Actions} {ACTION}Darbības, kas veido sadaļu SĀKT, vienmēr tiek aktivizētas. Tad awk izlasa atlikušās rindas pa vienai un redz, vai kaut kas ir jādara.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2}'Iepriekš minētā komanda iezīmēs divus izvades laukus, kas iegūti no komandas izvades.
4. Izmantojiet END paziņojumus
Varat arī izmantot paziņojumu END, lai pārliecinātos, ka noteiktas darbības vienmēr tiek veiktas jūsu darbības beigās. Vienkārši ievietojiet sadaļu END pēc galvenā darbību kopuma.
$ who | awk 'BEGIN {print 'User From'} {print $1, $2} END {print '--COMPLETED--'}'Iepriekš minētā komanda pievienos norādīto virkni izvades beigās.
5. Meklēšana, izmantojot modeļus
Liela daļa awk darbu ir saistīta ar modeļu saskaņošanu un regulāro izteiksmi. Kā mēs jau esam apsprieduši, awk meklē modeļus katrā ievades rindā un veic darbību tikai tad, kad tiek aktivizēta atbilstība. Mūsu iepriekšējie noteikumi sastāvēja tikai no darbībām. Zemāk mēs esam ilustrējuši modeļu atbilstības pamatus, izmantojot Linux komandu awk.
$ who | awk '/mary/ {print}'Šī komanda redzēs, vai lietotājs Marija pašlaik ir pieteicies vai nē. Ja tiks atrasta atbilstība, tā izvadīs visu rindu.
6. Izņemiet informāciju no failiem
Komanda awk ļoti labi darbojas ar failiem, un to var izmantot sarežģītiem failu apstrādes uzdevumiem. Šī komanda parāda, kā awk apstrādā failus.
$ awk '/hello/ {print}' /usr/share/dict/american-englishŠī komanda meklē modeli “sveiki” amerikāņu-angļu vārdnīcas failā. Tas ir pieejams lielākajā daļā Linux balstītas izplatīšanas . Tādējādi šajā failā varat viegli izmēģināt awk programmas.
7. Izlasiet AWK skriptu no avota faila
Lai gan viena līnija programmu rakstīšana ir noderīga, jūs varat arī rakstīt lielas programmas, pilnībā izmantojot awk. Jūs vēlaties tos saglabāt un palaist programmu, izmantojot avota failu.
$ awk -f script-file $ awk --file script-fileThe -f vai - fails opcija ļauj mums norādīt programmas failu. Tomēr jums nav jāizmanto pēdiņas (‘’) skripta faila iekšienē, jo Linux apvalks šādā veidā neskaidros programmas kodu.
8. Iestatiet ievades lauka atdalītāju
Lauku atdalītājs ir norobežotājs, kas sadala ievades ierakstu. Mēs varam viegli norādīt lauku atdalītājus awk, izmantojot -F vai -lauku atdalītājs iespēja. Pārbaudiet zemāk esošās komandas, lai redzētu, kā tas darbojas.
$ echo 'This-is-a-simple-example' | awk -F - ' {print $1} ' $ echo 'This-is-a-simple-example' | awk --field-separator - ' {print $1} 'Tas darbojas vienādi, ja Linux izmanto skripta failus, nevis vienu līniju awk komandu.
9. Drukāt informāciju, pamatojoties uz stāvokli
Esam apsprieduši Linux izgriešanas komanda iepriekšējā ceļvedī. Tagad mēs parādīsim, kā iegūt informāciju, izmantojot awk, tikai tad, ja ir noteikti kritēriji. Mēs izmantosim to pašu testa failu, ko izmantojām šajā rokasgrāmatā. Tāpēc dodieties tur un izveidojiet kopiju test.txt failu.
$ awk '$4 > 50' test.txtŠī komanda izdrukās visas valstis no faila test.txt, kurā ir vairāk nekā 50 miljoni iedzīvotāju.
10. Drukājiet informāciju, salīdzinot regulārās izteiksmes
Šī awk komanda pārbauda, vai jebkuras rindas trešais lauks satur rakstu “Lira”, un, ja tiek atrasta atbilstība, izdrukā visu rindu. Mēs atkal izmantojam failu test.txt, ko izmanto, lai ilustrētu Linux izgriešanas komanda . Tāpēc pirms turpināt, pārliecinieties, vai esat ieguvis šo failu.
$ awk '$3 ~ /Lira/' test.txtJa vēlaties, varat drukāt tikai noteiktu daļu no jebkuras spēles.
11. Saskaitiet kopējo ievadīto rindu skaitu
Komandai awk ir daudz speciālu mainīgo, kas ļauj mums viegli veikt daudzas uzlabotas lietas. Viens no šādiem mainīgajiem ir NR, kas satur pašreizējo rindas numuru.
$ awk 'END {print NR} ' test.txtŠī komanda izvadīs, cik rindu ir mūsu failā test.txt. Tas vispirms atkārtojas pa katru rindu, un, kad tas ir sasniedzis END, tas izdrukās NR vērtību, kas šajā gadījumā satur kopējo rindu skaitu.
12. Iestatiet izvades lauka atdalītāju
Iepriekš mēs esam parādījuši, kā atlasīt ievades lauku atdalītājus, izmantojot -F vai -lauku atdalītājs iespēja. Komanda awk arī ļauj mums norādīt izvades lauku atdalītāju. Zemāk redzamais piemērs to parāda, izmantojot praktisku piemēru.
$ date | awk 'OFS='-' {print$2,$3,$6}'Šī komanda izdrukā pašreizējo datumu, izmantojot formātu dd-mm-yy. Palaidiet datuma programmu bez awk, lai redzētu, kā izskatās noklusējuma izvade.
13. If Construct izmantošana
Tāpat kā citi populāras programmēšanas valodas , awk arī nodrošina lietotājus ar if-else konstrukcijām. Ja paziņojumam awk ir šāda sintakse.
if (expression) { first_action second_action }Atbilstošās darbības tiek veiktas tikai tad, ja nosacījuma izteiksme ir patiesa. Zemāk redzamais piemērs to parāda, izmantojot mūsu atsauces failu test.txt .
$ awk '{ if ($4>100) print }' test.txtJums nav stingri jāuztur ievilkums.
14. If-Else Constructs izmantošana
Izmantojot zemāk esošo sintaksi, varat izveidot noderīgas trepes. Tie ir noderīgi, izstrādājot sarežģītus awk skriptus, kas attiecas uz dinamiskiem datiem.
if (expression) first_action else second_action$ awk '{ if ($4>100) print; else print }' test.txtIepriekš minētā komanda drukās visu atsauces failu, jo ceturtais lauks katrai rindai nav lielāks par 100.
15. Iestatiet lauka platumu
Dažreiz ievades dati ir diezgan netīri, un lietotājiem var būt grūti tos vizualizēt savos pārskatos. Par laimi, awk nodrošina jaudīgu iebūvētu mainīgo FIELDWIDTHS, kas ļauj mums definēt ar atstarpēm atdalītu platumu sarakstu.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= '3 4 5'} {print $1, $2, $3}'Tas ir ļoti noderīgi, analizējot izkliedētos datus, jo mēs varam kontrolēt izvades lauka platumu tieši tā, kā vēlamies.
16. Iestatiet ierakstu atdalītāju
RS vai ierakstu atdalītājs ir vēl viens iebūvēts mainīgais, kas ļauj mums norādīt, kā ieraksti tiek atdalīti. Vispirms izveidosim failu, kas parādīs šī awk mainīgā darbību.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412$ awk 'BEGIN{FS=' '; RS=''} {print $1,$3}' new.txtŠī komanda parsēs dokumentu un izslēgs abu personu vārdu un adresi.
17. Drukas vides mainīgie
Komanda awk Linux ļauj mums viegli izdrukāt vides mainīgos, izmantojot mainīgo ENVIRON. Zemāk esošā komanda parāda, kā to izmantot, lai izdrukātu mainīgā PATH saturu.
$ awk 'BEGIN{ print ENVIRON['PATH'] }'Varat izdrukāt jebkura vides mainīgā saturu, aizstājot mainīgā ENVIRON argumentu. Zemāk esošā komanda izdrukā vides mainīgā HOME vērtību.
$ awk 'BEGIN{ print ENVIRON['HOME'] }'18. Izlaist dažus laukus no izvades
Komanda awk ļauj mums izlaist noteiktas rindas no mūsu izvades. Šī komanda to parādīs, izmantojot mūsu atsauces failu test.txt .
$ awk -F':' '{$2=''; print}' test.txtŠī komanda izlaidīs mūsu faila otro kolonnu, kurā ir katras valsts galvaspilsētas nosaukums. Varat arī izlaist vairākus laukus, kā parādīts nākamajā komandā.
$ awk -F':' '{$2='';$3='';print}' test.txt19. Noņemiet tukšās līnijas
Dažreiz dati var saturēt pārāk daudz tukšu rindu. Jūs varat izmantot komandu awk, lai diezgan viegli noņemtu tukšās rindas. Pārbaudiet nākamo komandu, lai redzētu, kā tas darbojas praksē.
$ awk '/^[ ]*$/{next}{print}' new.txtMēs esam noņēmuši visas tukšās rindas no faila new.txt, izmantojot vienkāršu regulāro izteiksmi un iebūvēto awk, ko sauc par nākamo.
20. Noņemiet beigu atstarpes
Daudzu Linux komandu izvade satur beigu atstarpes. Mēs varam izmantot komandu awk operētājsistēmā Linux, lai noņemtu tādas atstarpes kā atstarpes un cilnes. Pārbaudiet zemāk esošo komandu, lai uzzinātu, kā risināt šādas problēmas, izmantojot awk.
$ awk '{sub(/[ ]*$/, '');print}' new.txt test.txtPievienojiet mūsu atsauces failiem dažas atstarpes un pārbaudiet, vai awk tās ir veiksmīgi noņemtas. Tas manā mašīnā to izdarīja veiksmīgi.
21. Pārbaudiet lauku skaitu katrā rindā
Mēs varam viegli pārbaudīt, cik lauku ir rindā, izmantojot vienkāršu awk one-liner. Ir daudz veidu, kā to izdarīt, taču šim uzdevumam mēs izmantosim dažus no awk iebūvētajiem mainīgajiem. Mainīgais NR dod mums rindas numuru, un NF mainīgais nodrošina lauku skaitu.
$ awk '{print NR,'-->',NF}' test.txtTagad mēs varam apstiprināt, cik daudz lauku ir katrā rindā test.txt dokuments. Tā kā katra šī faila rinda satur 5 laukus, mēs esam pārliecināti, ka komanda darbojas, kā paredzēts.
22. Pārbaudiet pašreizējo faila nosaukumu
Awk mainīgais FILENAME tiek izmantots pašreizējā ievades faila nosaukuma pārbaudei. Mēs demonstrējam, kā tas darbojas, izmantojot vienkāršu piemēru. Tomēr tas var būt noderīgi situācijās, kad faila nosaukums nav skaidri zināms vai ja ir vairāk nekā viens ievades fails.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txtIepriekš minētās komandas izdrukā faila nosaukumu awk, ar kuru strādā, katru reizi, kad tiek apstrādāta jauna ievades failu rinda.
23. Pārbaudiet apstrādāto ierakstu skaitu
Šis piemērs parādīs, kā mēs varam pārbaudīt ierakstu skaitu, ko apstrādā komanda awk. Tā kā liels skaits Linux sistēmas administratoru pārskatu ģenerēšanai izmanto awk, tas viņiem ir ļoti noderīgi.
$ awk '{print 'Processing Record - ',NR;} END {print ' Total Records Processed:', NR;}' test.txtEs bieži izmantoju šo awk fragmentu, lai iegūtu skaidru pārskatu par savām darbībām. Jūs varat to viegli pielāgot, lai pielāgotos jaunām idejām vai darbībām.
24. Izdrukājiet ierakstu kopējo rakstzīmju skaitu
Awk valoda nodrošina ērtu funkciju garums (), kas norāda, cik rakstzīmju ir ierakstā. Tas ir ļoti noderīgi vairākos scenārijos. Ātri apskatiet šo piemēru, lai redzētu, kā tas darbojas.
$ echo 'A random text string...' | awk '{ print length($0); }'$ awk '{ print length($0); }' /etc/passwdIepriekš minētā komanda drukās kopējo rakstzīmju skaitu katrā ievades virknes vai faila rindā.
25. Izdrukājiet visas līnijas ilgāk par noteikto garumu
Iepriekšminētajai komandai mēs varam pievienot dažus nosacījumus un likt tai drukāt tikai tās rindas, kas ir lielākas par iepriekš noteiktu garumu. Tas ir noderīgi, ja jums jau ir priekšstats par konkrēta ieraksta garumu.
$ echo 'A random text string...' | awk 'length($0) > 10'$ awk '{ length($0) > 5; }' /etc/passwdJūs varat izmantot vairāk iespēju un/vai argumentu, lai pielāgotu komandu, pamatojoties uz jūsu prasībām.
26. Izdrukājiet rindu, rakstzīmju un vārdu skaitu
Šī Linux komanda awk izdrukā rindu, rakstzīmju un vārdu skaitu noteiktā ievadē. Šīs darbības veikšanai tiek izmantots mainīgais NR, kā arī dažas pamata aritmētikas.
$ echo 'This is a input line...' | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'Tas parāda, ka ievades virknē ir 1 rinda, 5 vārdi un tieši 24 rakstzīmes.
27. Aprēķiniet vārdu biežumu
Mēs varam apvienot asociatīvos masīvus un for ciklu in awk, lai aprēķinātu dokumenta vārdu biežumu. Šī komanda var šķist nedaudz sarežģīta, taču tā ir diezgan vienkārša, kad skaidri saprotat pamatkonstrukcijas.
$ awk 'BEGIN {FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txtJa jums ir problēmas ar vienas līnijas fragmentu, nokopējiet šo kodu jaunā failā un palaidiet to, izmantojot avotu.
$ cat > frequency.awk BEGIN { FS='[^a-zA-Z]+' } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }Pēc tam palaidiet to, izmantojot -f iespēja.
$ awk -f frequency.awk test.txt28. Pārdēvēt failus, izmantojot AWK
Komandu awk var izmantot, lai pārdēvētu visus failus, kas atbilst noteiktiem kritērijiem. Šī komanda parāda, kā izmantot awk, lai pārdēvētu visus direktorijā esošos .MP3 failus uz .mp3 failiem.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf('mv '%s' '%s' ', $0, tolower($0)) }' | shPirmkārt, mēs izveidojām dažus demonstrācijas failus ar paplašinājumu .MP3. Otrā komanda parāda lietotājam, kas notiek, ja pārdēvēšana ir veiksmīga. Visbeidzot, pēdējā komanda pārdēvē operāciju, izmantojot Linux komandu mv.
29. Izdrukājiet skaitļa kvadrātsakni
AWK piedāvā vairākas iebūvētas funkcijas ciparu manipulēšanai. Viens no tiem ir funkcija sqrt (). Tā ir C līdzīga funkcija, kas atgriež dotā skaitļa kvadrātsakni. Ātri apskatiet nākamo piemēru, lai redzētu, kā tas darbojas kopumā.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'Tā kā jūs nevarat noteikt negatīvā skaitļa kvadrātsakni, izvadē sqrt (-12) vietā tiks parādīts īpašs atslēgvārds ar nosaukumu “nan”.
30. Izdrukājiet skaitļa logaritmu
Funkcijas žurnāls awk () nodrošina skaitļa dabisko logaritmu. Tomēr tas darbosies tikai ar pozitīviem skaitļiem, tāpēc ņemiet vērā lietotāju ievades apstiprināšanu. Pretējā gadījumā kāds var pārtraukt jūsu awk programmas un iegūt priviliģētu piekļuvi sistēmas resursiem.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'Jums vajadzētu redzēt logaritmu 36 un pārbaudīt, vai logaritms 0 ir bezgalība, un negatīvās vērtības žurnāls ir “Nav skaitlis” vai nan.
31. Izdrukājiet skaitļa eksponenciālu
Eksponenciālais os a skaitlis n nodrošina e^n vērtību. To parasti izmanto awk skriptos, kas nodarbojas ar lieliem cipariem vai sarežģītu aritmētisko loģiku. Mēs varam ģenerēt skaitļa eksponenciālu, izmantojot iebūvēto awk funkciju exp ().
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'Tomēr awk nevar aprēķināt eksponenciālu lieliem skaitļiem. Jums vajadzētu veikt šādus aprēķinus, izmantojot zema līmeņa programmēšanas valodas, piemēram, C, un norādīt vērtību saviem awk skriptiem.
32. Izveidojiet nejaušus skaitļus, izmantojot AWK
Mēs varam izmantot komandu awk Linux, lai ģenerētu nejaušus skaitļus. Šie skaitļi būs diapazonā no 0 līdz 1, bet nekad 0 vai 1. Jūs varat reizināt fiksētu vērtību ar iegūto skaitli, lai iegūtu lielāku izlases vērtību.
$ awk 'BEGIN{ print rand(); print rand()*99 }'Funkcijai rand () nav nepieciešami argumenti. Turklāt šīs funkcijas radītie skaitļi nav precīzi nejauši, bet drīzāk pseidogadījumi. Turklāt ir diezgan viegli paredzēt šos skaitļus no skriešanas uz skrējienu. Tāpēc jums nevajadzētu paļauties uz tiem, veicot sensitīvus aprēķinus.
33. Krāsu sastādītāja brīdinājumi sarkanā krāsā
Mūsdienu Linux kompilatori brīdinās, ja jūsu kods nesaglabā valodas standartus vai ja tajā ir kļūdas, kas neaptur programmas izpildi. Šī komanda awk sarkanā krāsā drukās kompilatora ģenerētās brīdinājuma līnijas.
$ gcc -Wall main.c |& awk '/: warning:/{print 'x1B[01;31m' $0 'x1B[m';next;}{print}'Šī komanda ir noderīga, ja vēlaties precīzi noteikt kompilatora brīdinājumus. Šo komandu varat izmantot ar jebkuru kompilatoru, izņemot gcc, vienkārši mainiet modeli /: brīdinājums: /, lai atspoguļotu konkrēto kompilatoru.
34. Izdrukājiet failu sistēmas UUID informāciju
UUID vai Universāli unikāls identifikators ir skaitlis, ko var izmantot, lai identificētu tādus resursus kā Linux failu sistēma . Mēs varam vienkārši izdrukāt mūsu failu sistēmas UUID informāciju, izmantojot šādu Linux awk komandu.
$ awk '/UUID/ {print $0}' /etc/fstabŠī komanda meklē tekstu UUID /etc/fstab failu, izmantojot awk modeļus. Tas atgriež komentāru no faila, kas mūs neinteresē. Zemāk esošā komanda nodrošinās, ka mēs saņemam tikai tās rindas, kas sākas ar UUID.
$ awk '/^UUID/ {print $1}' /etc/fstabTas ierobežo izvadi līdz pirmajam laukam. Tātad mēs iegūstam tikai UUID numurus.
35. Izdrukājiet Linux kodola attēla versiju
Tiek izmantoti dažādi Linux kodola attēli dažādi Linux izplatījumi . Mēs varam viegli izdrukāt precīzu kodola attēlu, uz kura balstās mūsu sistēma, izmantojot awk. Pārbaudiet šo komandu, lai redzētu, kā tas darbojas kopumā.
$ uname -a | awk '{print $3}'Mēs vispirms esam izdevuši komandu uname ar -uz opciju un pēc tam pārsūtīja šos datus uz awk. Tad mēs esam ieguvuši kodola attēla versijas informāciju, izmantojot awk.
36. Pievienojiet rindu numurus pirms rindām
Lietotāji diezgan bieži var saskarties ar teksta failiem, kas nesatur rindu numurus. Par laimi, jūs varat viegli pievienot rindu numurus failam, izmantojot Linux komandu awk. Rūpīgi apskatiet zemāk redzamo piemēru, lai redzētu, kā tas darbojas reālajā dzīvē.
$ awk '{ print FNR '. ' $0 ;next}{print}' test.txtIepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print $1 }' test.txt | sortNākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print $1 }' /etc/passwd | sortJūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awkJa vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --helpSkatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --versionBeigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
Kopīgot Facebook Twitter Pinterest WhatsApp ReddIt Telegramma Viber
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt
- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt- DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt- Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
AtbildētATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.
Jaunākā ziņa
Android10 labākās sejas maiņas lietotnes Android un iOS ierīcēm
Windows OSKā ieplānot Windows 10, lai automātiski iztukšotu atkritni
Android10 labākās rēķinu izrakstīšanas lietotnes Android ierīcei, lai ātri samaksātu
Windows OS10 labākās GPU etalona programmatūras jūsu datoram
Vajag izlasīt
LinuxKā instalēt un konfigurēt XAMPP operētājsistēmā Ubuntu Linux
LinuxUbuntu Communitheme - Jauna Ubuntu kopienas tēma
LinuxKā instalēt programmatūru no avota koda savā Linux sistēmā
LinuxRedNotebook - mūsdienīga un bezmaksas dienasgrāmatu un žurnālu programmatūra Linux
Saistītā ziņa
Kā instalēt un iestatīt kabīnes tīmekļa konsoli Linux sistēmā
Kā instalēt un iestatīt Yii PHP Framework Ubuntu Linux
Kā labot W: dažiem indeksa failiem neizdevās lejupielādēt kļūdu Ubuntu Linux
Kā instalēt un iestatīt 1Password Linux darbvirsmā
Kā instalēt jaunāko GNU Nano teksta redaktoru Linux darbvirsmā
Kā instalēt jaunu relikvijas infrastruktūras aģentu Linux sistēmā
Iepriekš minētā komanda pievienos rindas numuru pirms katras mūsu test.txt atsauces faila rindas. Lai to novērstu, tas izmanto iebūvēto awk mainīgo FNR.
37. Izdrukājiet failu pēc satura kārtošanas
Mēs varam arī izmantot awk, lai izdrukātu sakārtotu visu rindu sarakstu. Šīs komandas drukā visu mūsu test.txt valstu nosaukumu sakārtotā secībā.
$ awk -F ':' '{ print }' test.txt | sort
Nākamā komanda drukās visu lietotāju pieteikšanās vārdu no /etc/passwd failu.
$ awk -F ':' '{ print }' /etc/passwd | sort
Jūs varat viegli mainīt kārtošanas kārtību, mainot kārtošanas komandu.
38. Izdrukājiet rokasgrāmatas lapu
Rokasgrāmatas lapā ir detalizēta informācija par komandu awk, kā arī visas pieejamās iespējas. Tas ir ārkārtīgi svarīgi cilvēkiem, kuri vēlas rūpīgi apgūt awk komandu.
$ man awk
Ja vēlaties apgūt sarežģītas awk funkcijas, tas jums ļoti palīdzēs. Iepazīstieties ar šo dokumentāciju ikreiz, kad esat saskāries ar problēmu.
39. Izdrukājiet palīdzības lapu
Palīdzības lapā ir apkopota informācija par visiem iespējamiem komandrindas argumentiem. Varat izsaukt palīdzības ceļvedi, lai iegūtu awk, izmantojot vienu no šīm komandām.
$ awk -h $ awk --help
Skatiet šo lapu, ja vēlaties ātri apskatīt visas pieejamās awk iespējas.
40. Informācija par drukas versiju
Versijas informācija sniedz mums informāciju par programmu veidošanu. Awk versijas lapā ir tāda informācija kā autortiesības, apkopošanas rīki utt. Šo informāciju varat skatīt, izmantojot vienu no šīm awk komandām.
$ awk -V $ awk --version
Beigu domas
Komanda awk operētājsistēmā Linux ļauj mums veikt visu veidu lietas, tostarp failu apstrādi un sistēmas uzturēšanu. Tas nodrošina daudzveidīgu darbību klāstu, lai diezgan viegli tiktu galā ar ikdienas skaitļošanas uzdevumiem. Mūsu redaktori ir apkopojuši šo rokasgrāmatu ar 40 noderīgām awk komandām, kuras var izmantot teksta manipulācijām vai administrēšanai. Tā kā AWK pati par sevi ir pilnvērtīga programmēšanas valoda, ir vairāki veidi, kā veikt vienu un to pašu darbu. Tāpēc nebrīnieties, kāpēc mēs dažas lietas darām citādi. Jūs vienmēr varat apkopot savas receptes, pamatojoties uz savu prasmju kopumu un pieredzi. Ja jums ir kādi jautājumi, atstājiet mums savas domas.
- Tagi
- Programmēšanas rīki
- Sistēmas utilītas rīki
7 KOMENTĀRI
- Ramesh 2020. gada 24. aprīlis plkst. 07:48
Kas ir labākais sed vai awk?
Atbildēt- lauhub 2021. gada 6. janvāris 04:41
Abi ir labākie:
kā es varu dienas pievienot datumam
- sed ir noderīgs vienkāršiem nomaiņas/izdevuma uzdevumiem, un tam ir daži ierobežojumi sarežģītu uzdevumu programmēšanai (lai gan pieredzējuši lietotāji var darīt daudzas lietas)
- awk ir jābūt daudzpusīgākam, lai veiktu vienkāršus uzdevumus, bet ļauj sarežģītākām programmām izmantot sarežģītākas datu struktūras.
Jebkurā gadījumā viss ir atkarīgs no jūsu vajadzībām un zināšanām par šiem rīkiem
Atbildēt - DC 2021. gada 16. jūlijs plkst. 09:17
Abi ir funkcionāli atšķirīgi. sed ir ierobežota funkcionalitāte. Parasti izmanto, lai atrastu un aizstātu virkņu redaktoru.
Atbildēt
awk tiek izmantots datu manipulācijām un nodrošina vairāk programmēšanas funkcionalitātes
- lauhub 2021. gada 6. janvāris 04:41
- Ahmeds 2020. gada 16. aprīlis plkst. 13:24
Sveiki,
Atbildēt
Piemēri ir lieliski, taču būtu bijis labāk, ja jūs būtu ievietojis izlaidi arī pēc piemēra.- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
Paldies, Ahmed, ka tu paliec pie mums. Tomēr mēs baidāmies, ka katrai komandai pievienojot atsevišķus attēlus, ceļvedis būs ārkārtīgi garš, un tāpēc lietotāji, kas to lasa no maza ekrāna ierīcēm, piemēram, tālruņiem/planšetdatoriem, var saskarties ar nevēlamu ritināšanas pieredzi.
Turklāt mēs mudinām mūsu lasītājus uzlabot šīs awk komandas Linux, atrodoties ceļā, un izmēģināt tās no pirmavotiem. Tādā veidā jūs tos apgūsit ātrāk.
Atbildēt
- Rubaiat Hossain 2020. gada 18. aprīlis plkst. 01:28
- Stefans 2020. gada 6. aprīlī plkst. 10:54
Lieliski piemēri. Paldies par šo
Atbildēt - Kārans Grovers 2020. gada 2. aprīlī plkst. 17:29
jauki awk piemēri
Atbildēt
ATSTĀJ ATBILDI Atcelt atbildi
Komentārs: Lūdzu, ievadiet savu komentāru! Vārds:* Lūdzu, ievadiet savu vārdu šeit E -pasts:* Jūs esat ievadījis nepareizu e -pasta adresi! Lūdzu, šeit ievadiet savu e -pasta adresi Vietne:Saglabājiet manu vārdu, e -pastu un vietni šajā pārlūkprogrammā, lai nākamreiz komentētu.