Awk

Kā lietot Regex ar komandu 'awk'

Kā lietot Regex ar komandu 'awk'

Regulāra izteiksme (regex) tiek izmantota, lai failā atrastu noteiktu rakstzīmju secību. Modeļa definēšanai var izmantot tādus simbolus kā burti, cipari un īpašās rakstzīmes. Dažādus uzdevumus var viegli izpildīt, izmantojot regex modeļus. Šajā apmācībā mēs parādīsim, kā izmantot regex modeļus ar komandu 'awk'.

Modeļos izmantotās pamata rakstzīmes

Regex modeļa definēšanai var izmantot daudzas rakstzīmes. Rakstzīmes, ko visbiežāk izmanto regex modeļu definēšanai, ir definētas zemāk.

Raksturs Apraksts
. Pielāgojiet jebkuru rakstzīmi bez jaunas rindas (\ n)
\ Citēt jaunu meta varoni
^ Sakrīt ar rindas sākumu
$ Atbilst rindas beigām
| Definējiet aizstājēju
() Definējiet grupu
[] Definējiet rakstzīmju klasi
\ w Sakrīt ar jebkuru vārdu
\ s Saskaņojiet jebkuru atstarpes rakstzīmi
\ d Saskaņojiet jebkuru ciparu
\ b Saskaņojiet jebkuru vārdu robežu

Izveidojiet failu

Lai sekotu līdzi šai apmācībai, izveidojiet teksta failu ar nosaukumu produktiem.txt. Failā jābūt četriem laukiem: ID, nosaukums, tips un cena.

ID Nosaukums Tips Cena

p1001 15 "monitora monitors 100 ASV dolāri

p1002 peles A4tech pele 10 USD

p1003 Samsung printera printeris 50 USD

p1004 HP skenera skeneris 60 USD

p1005 Logitech peles pele 15 USD

1. piemērs: definējiet regex paraugu, izmantojot rakstzīmju klasi

Sekojošā komanda “awk” meklēs un izdrukās līnijas, kurās ir raksturs “n”, kam seko rakstzīmes “er”.

$ kaķu produkti.txt
$ awk '/ [n] [er] / print $ 0' produktus.txt

Pēc iepriekš minēto komandu izpildīšanas tiks izveidota šāda izeja. Izvade parāda līniju, kas atbilst paraugam. Šeit modelim atbilst tikai viena līnija.

2. piemērs: definējiet regex paraugu, izmantojot simbolu '^'

Sekojošā komanda “awk” meklēs un izdrukās līnijas, kas sākas ar burtu “p” un ietver skaitli 3.

$ kaķu produkti.txt
$ awk '/ ^ lpp.* 3 / print $ 0 'produkti.txt

Pēc iepriekš minēto komandu izpildīšanas tiks izveidota šāda izeja. Šeit ir viena līnija, kas atbilst paraugam.

3. piemērs: definējiet regex paraugu, izmantojot funkciju gsub

The gsub () funkciju izmanto, lai globāli meklētu un aizstātu tekstu. Šī komanda “awk” pirms rezultāta izdrukāšanas meklēs vārdu “Skeneris” un aizstās to ar vārdu “Maršrutētājs”.

$ kaķu produkti.txt
$ awk 'gsub (/ Scanner /, "Router")' produkti.txt

Pēc iepriekš minēto komandu izpildīšanas tiks izveidota šāda izeja. Ir viena rinda, kurā ir vārds 'Skeneris', un 'Skeneris"aizstāj ar vārdu"Maršrutētājspirms rindas drukāšanas.

4. piemērs: definējiet regex modeli ar '*'

Sekojošā komanda “awk” meklēs un izdrukās visas virknes, kas sākas ar “Mo” un ietver visas turpmākās rakstzīmes.

$ kaķu produkti.txt
$ awk '/ Mo * / print $ 0' produktus.txt

Pēc iepriekš minēto komandu izpildīšanas tiks izveidota šāda izeja. Trīs līnijas atbilst modelim: divās līnijās ir vārds "Pele"un vienā rindā ir vārds"Monitor".

5. piemērs: definējiet regex paraugu, izmantojot simbolu '$'

Sekojošā komanda “awk” meklēs un izdrukās rindas failā, kas beidzas ar skaitli 5.

$ kaķu produkti.txt
$ awk '/ 5 $ / print $ 0' produktus.txt

Pēc iepriekš minēto komandu izpildīšanas tiks izveidota šāda izeja.  Failā ir tikai viena rinda, kas beidzas ar skaitli 5.

6. piemērs: definējiet regex paraugu, izmantojot “^” un “|” simboli

The '^simbols norāda līnijas sākumu un|'simbols norāda loģisku VAI priekšrakstu. Šī komanda 'awk' meklēs un izdrukās līnijas, kas sākas ar rakstzīmi 'lpp"un satur vai nu"Skeneris"vai"Pele".

$ kaķu produkti.txt
$ awk '/ ^ lpp.* (Skeneris | Pele) / 'produkti.txt

Pēc iepriekš minēto komandu izpildīšanas tiks izveidota šāda izeja. Rezultāts parāda, ka divās rindās ir vārds 'Pele"un vienā rindā ir vārds"Skeneris". Trīs rindas sākas ar rakstzīmi 'lpp".

7. piemērs: definējiet regex paraugu, izmantojot simbolu “+”

The '+'Operators tiek izmantots, lai atrastu vismaz vienu atbilstību. Šī komanda 'awk' meklēs un izdrukās līnijas, kurās ir rakstzīme 'n' vismaz vienreiz.

$ kaķu produkti.txt
$ awk '/ n + / print' produkti.txt

Pēc iepriekš minēto komandu izpildīšanas tiks izveidota šāda izeja. Šeit rakstursn'satur satur vismaz vienu reizi rindās, kurās ir vārdi Monitoru, printeri un skeneri.

8. piemērs: definējiet regex paraugu, izmantojot funkciju gsub ()

Šī komanda “awk” globāli meklēs vārdu “Printeris"un aizstāj to ar vārdu"Monitor' izmantojot gsub () funkcija.

$ kaķu produkti.txt
$ awk 'gsub (/ Printer / "Monitor") print $ 0' produkti.txt

Pēc iepriekš minēto komandu izpildīšanas tiks izveidota šāda izeja. Faila ceturtajā rindā ir vārds “Printeris"divreiz un izlaidumā"Printeris"ir aizstāts ar vārdu"Monitor".

Secinājums

Daudzus simbolus un funkcijas var izmantot, lai definētu regex modeļus dažādiem meklēšanas un aizvietošanas uzdevumiem. Daži simboli, kas parasti tiek izmantoti regex modeļos, šajā apmācībā tiek izmantoti ar komandu 'awk'.

Instalējiet jaunāko OpenRA stratēģijas spēli Ubuntu Linux
OpenRA ir bezmaksas / bezmaksas reāllaika stratēģijas spēļu dzinējs, kas atjauno agrīnās Vestvudas spēles, piemēram, klasisko Command & Conquer: Red A...
Instalējiet jaunāko Dolphin emulatoru Gamecube un Wii operētājsistēmai Linux
Delfīnu emulators ļauj jums spēlēt izvēlētās Gamecube un Wii spēles Linux personālajos datoros (PC). Tā kā Dolphin Emulator ir brīvi pieejams un atvē...
Kā lietot GameConqueror Cheat Engine Linux
Rakstā ir sniegts ceļvedis par GameConqueror apkrāptu dzinēja izmantošanu Linux. Daudzi lietotāji, kas spēlē spēles operētājsistēmā Windows, bieži izm...