számos segédprogram létezik a Linux operációs rendszerben, hogy szöveges adatokból vagy fájlokból készítsen jelentést. Az awk, a grep és a sed parancsok segítségével a felhasználó könnyedén végrehajthat sokféle keresést, kicserélheti és bejelentheti a generáló feladatokat. az awk nem csak parancs. Ez egy szkriptnyelv, amely mind a terminál, mind az awk fájlból használható. Támogatja a változó, feltételes kijelentés, tömb, hurkok stb. mint más szkriptnyelvek., Bármely fájltartalom sort soronként képes elolvasni, valamint elválasztani a mezőket vagy oszlopokat egy adott határoló alapján. Azt is támogatja a reguláris kifejezés keres egy adott karakterlánc a szöveges tartalom vagy fájl, és lépéseket tesz, ha bármilyen mérkőzés founds. Hogyan lehet használni awk parancs script látható ez a bemutató segítségével 20 hasznos példák.,egy
Az awk a printf
printf() függvény használható formátumban, bármilyen kimenet a legtöbb programozási nyelvek., Ez a funkció az awk paranccsal különböző típusú formázott kimenetek generálására használható. az awk parancsot elsősorban bármilyen szöveges fájlhoz használják. Hozzon létre egy alkalmazott nevű szöveges fájlt.txt az alábbi tartalommal, ahol a mezőket lap választja el (“\t”).
alkalmazott.txt
1002 Jafar Iqbal 60000
1003 Meher Nigar 30000
1004 Jonny máj 70000
a következő awk parancs az alkalmazott adatait fogja olvasni.TXT fájl soronként, majd nyomtassa ki az első iktatott formázás után. Itt a “%10s\n ” azt jelenti, hogy a kimenet 10 karakter hosszú lesz., Ha a kimenet értéke kevesebb, mint 10 karakter, akkor a szóközök az érték elején kerülnek hozzáadásra.
kimenet:
ugrás a tartalomra
awk a fehér tér felosztásához
Az alapértelmezett szó vagy mező elválasztó bármely szöveg felosztásához fehér tér. awk parancs vehet szöveg értéke bemenetként különböző módokon. A bemeneti szöveg az echo parancsból kerül átadásra a következő példában., Az “I like programming” szöveget alapértelmezés szerint elválasztó, szóköz, a harmadik szót pedig kimenetként kell kinyomtatni.
Output:
awk to change the delimiter
awk parancs lehet használni, hogy módosítsa a határoló bármilyen fájl tartalmát. Tegyük fel, hogy van egy telefon nevű szöveges fájlja.txt a következő tartalommal, ahol a”: “a fájl tartalmának mezőelválasztójaként használható.
telefon.,txt
+880:1855:456:907
+9:7777:38644:808
futtassa a következő awk parancsot a határoló megváltoztatásához,”: “by” – ” a fájl tartalmára, telefonra.txt.
$ awk ‘$1=$1 ‘ FS=”: “OFS=” – ” telefon.txt
kimenet:
Go to Content
awk with tab-delimited data
awk parancs számos beépített változóval rendelkezik, amelyeket a szöveg különböző módon történő olvasására használnak. Kettő közülük FS és OFS., Az FS input field separator, az OFS pedig output field separator változók. Ezen változók felhasználása ebben a részben látható. Hozzon létre egy lapon elválasztott fájlt input néven.txt a következő tartalommal az FS és OFS változók használatának teszteléséhez.
Input.txt
Server-side scripting language
Database Server
Web Server
segítségével FS változó tab
a következő parancs osztja minden bemeneti sort.txt fájl a lap (‘\t’) alapján, majd nyomtassa ki az egyes sorok első mezőjét.,
kimenet:
az OFS változó tab
használatával a következő awk parancs kinyomtatja az “ls-l” parancs 9.és 5. mezőjét tab elválasztóval a “név”és a” méret ” oszlop címének kinyomtatását követően. Itt, OFS változó formázza a kimenetet egy lapon.,
$ ls-l | awk-V OFS=’\t’ ” begin { printf “%s\T%s\n”, “Name”, “Size”} {print $9,$5} ‘
kimenet:
ugrás a tartalomra
awk CSV adatokkal
bármely CSV fájl tartalma az AWK parancs használatával többféle módon értelmezhető. Hozzon létre egy CSV nevű fájlt ” ügyfél.csv ‘ a következő tartalommal az awk parancs alkalmazásához.
ügyfél.txt
a CSV fájl egyetlen mezőjének olvasása
‘-F’ opció az awk paranccsal használható a határoló beállításához a fájl minden sorának felosztásához., A következő awk parancs kiírja az ügyfél név mezőjét.csv fájl.
$ awk-F “, “‘{print $2} ‘ ügyfél.csv
kimenet:
több mező olvasása más szöveggel kombinálva
a következő parancs az ügyfél három mezőjét nyomtatja ki.csv kombinálásával cím Szöveg, Név, E-Mail, Telefon. Az ügyfél első sora.a csv fájl tartalmazza az egyes mezők címét. Az nr változó tartalmazza a fájl sorszámát, amikor az awk parancs elemzi a fájlt., Ebben a példában az NR változó a fájl első sorának kihagyására szolgál. A kimenet az első sor kivételével az összes sor 2., 3. és 4. mezőjét mutatja.
kimenet:
CSV fájl olvasása awk script segítségével
awk script futtatható awk fájl. Ebben a példában látható, hogy hogyan hozhat létre awk fájlt, és hogyan futtathatja a fájlt. Hozzon létre egy fájlt nevű awkcsv.awk a következő kóddal., BEGIN kulcsszó használják a script tájékoztatására awk parancsot, hogy végre a script a BEGIN rész első végrehajtása előtt más feladatokat. Itt a mező szeparátor (FS) a hasító határoló definiálására szolgál, a 2.és 1. mező pedig a printf() függvényben használt formátum szerint kerül kinyomtatásra.
begin {FS = “,”} {printf “%5S (%s) \ n”, $2,$1}
futtassa az awkcsv-t.awk fájl az ügyfél tartalmával.csv fájl a következő paranccsal.
kimenet:
ugrás a tartalomra
awk regex
a reguláris kifejezés olyan minta, amelyet a szöveg bármely karakterláncának keresésére használnak. Különböző típusú bonyolult keresés, majd cserélje feladatokat lehet tenni nagyon könnyen segítségével a reguláris kifejezés. A reguláris kifejezés néhány egyszerű felhasználása az awk paranccsal ebben a szakaszban látható.
a következő parancs megegyezik a Fool vagy bool vagy Cool szóval a beviteli karakterlánccal, majd kinyomtatja, ha a szó megjelenik., Itt a baba nem egyezik meg, nem nyomtat.
Output:
‘ szimbólum a reguláris kifejezésben bármilyen minta keresésére használják a vonal kezdetén. A “Linux” szó a szöveg minden sorának kezdetén a következő példában kerül keresésre. Itt két sor kezdődik a szöveggel, a “Linux” és ez a két sor jelenik meg a kimeneten.,
egy népszerű blog site” | awk ‘/^Linux/’
kimenet:
keresés karakterlánc végén a sor
‘$’ szimbólum használják a reguláris kifejezés keresni bármilyen mintát a végén minden sorban a szöveg. A “Script” szót a következő példában keressük. Itt két sor tartalmazza a szót, a szkriptet a sor végén.,
Output:
kereséssel kihagyva adott karakterkészlet
‘^’ szimbólum jelzi a kezdő a szöveget, amikor használják előtt bármilyen karakterlánc minta ( ‘/ ^ … / ‘ ), vagy mielőtt bármilyen karakterkészlet által bejelentett ^. Ha a ” ^ ” szimbólumot a harmadik konzol belsejében használják, akkor a konzol belsejében megadott karakterkészlet a keresés időpontjában elhagyásra kerül., A következő parancs minden olyan szót keres, amely nem az ” F “- vel kezdődik, hanem az ” ool ” – val végződik. A Cool és a bool nyomtatása a minta és a szöveges adatok szerint történik.
Teljesítmény:
Ugrás a Tartalomhoz
awk esetben érzéketlen regex
alapértelmezés szerint, a reguláris kifejezés nem az esetben érzékeny, keresse amikor keres bármilyen minta a húr. Eset érzéketlen keresés lehet tenni awk parancsot a reguláris kifejezés., A következő példában a tolower () függvényt használjuk az érzéketlen keresés esetére. Itt a bevitt szöveg minden sorának első szava a tolower() függvény segítségével lesz kisebbbetűs, és illeszkedik a reguláris kifejezésmintához. toupper () függvény is használható erre a célra, ebben az esetben a mintát minden nagybetűvel kell meghatározni. A következő példában meghatározott szöveg két sorban tartalmazza a keresőszót, a ” web ” – et, amelyet kimenetként nyomtatnak.,
kimenet:
awk with NF (number of fields) variable
NF egy beépített változó awk parancs, amely arra szolgál, hogy megszámolja a mezők száma minden sorban a bemeneti szöveget. Hozzon létre bármilyen szöveges fájlt több sorral és több szóval. a bemenet.itt használjuk a TXT fájlt, amelyet az előző példában hoztunk létre.,
NF használatával a
parancssorból itt az első parancs a bemenet tartalmának megjelenítésére szolgál.a TXT fájl és a second paranccsal a fájl minden sorában lévő mezők teljes számát mutatja az NF változó használatával.
$ awk ‘{print NF} ‘ input.txt
kimenet:
NF használatával awk fájlban
Hozzon létre egy count nevű awk fájlt.awk a script alább megadott. Ha ez a szkript bármilyen szöveges adatokkal végrehajtásra kerül, akkor minden sor tartalmát a teljes mezőkkel nyomtatják kimenetként.
szám.,awk
{print””}
futtassa a szkriptet a következő paranccsal.
Output:
Go to Content
awk gensub() function
getsub() egy helyettesítési függvény, amelyet a karakterlánc keresésére használnak adott delimiter vagy reguláris kifejezésmintázat alapján. Ezt a funkciót a “gawk” csomag határozza meg, amely alapértelmezés szerint nincs telepítve. A függvény szintaxisát az alábbiakban adjuk meg., Az első paraméter tartalmaz a reguláris kifejezések mintát, vagy keres határoló, a Második paraméter tartalmazza a helyettesítő szöveget, a harmadik paraméter azt jelzi, hogy a keresés lesz az utolsó paraméter tartalmazza a szöveget, amelyben ez a funkció alkalmazni.
szintaxis:
futtassa a következő parancsot a gawk csomag telepítéséhez a getsub() függvény awk paranccsal történő használatához.
Hozzon létre egy “salesinfo” nevű szöveges fájlt.,txt ‘ a következő tartalommal a példa gyakorlásához. Itt a mezőket egy lap választja el.
salesinfo.txt
K 80000
sze 750000
Thu 200000
p 430000
Szo 820000
futtassa a következő parancsot a salesinfo numerikus mezőinek olvasásához.txt fájl, majd nyomtassa ki az összes értékesítési összeg. Itt a harmadik paraméter, a ” G ” jelzi a globális keresést. Ez azt jelenti,hogy a minta a fájl teljes tartalmában keresendő.,
Teljesítmény:
Ugrás a Tartalomhoz
awk-val rand() függvény
rand() függvény létrehozásához használt bármilyen véletlen szám nagyobb, mint 0, de kevesebb mint 1. Tehát mindig 1-nél kisebb frakcionált számot generál. A következő parancs létrehoz egy frakcionált véletlen számot, majd szorozzuk meg az értéket 10-rel, hogy több mint 1 számot kapjunk., A tizedes pont után két számjegyű frakcionált számot nyomtatnak a printf () funkció alkalmazásához. Ha többször futtatja a következő parancsot, akkor minden alkalommal különböző kimenetet kap.
kimenet:
ugrás a tartalomra
awk felhasználó által definiált függvény
az előző példákban használt összes funkció beépített függvény. De akkor állapítsa meg a felhasználó által definiált funkció a awk script, hogy nem egy adott feladat., Tegyük fel, hogy egyéni funkciót szeretne létrehozni a téglalap területének kiszámításához. Ehhez a feladathoz hozzon létre egy “terület” nevű fájlt.awk ‘ a következő szkript. Ebben a példában egy area () nevű felhasználó által definiált függvény jelenik meg a szkriptben, amely a beviteli paraméterek alapján kiszámítja a területet, majd visszaadja a terület értékét. a getline parancsot itt használják a felhasználó bevitelére.
terület.awk
futtassa a szkriptet.
Output:
Go to Content
awk if example
awk supports conditional statements like other standard programming languages. Az if kimutatások három típusa jelenik meg ebben a szakaszban három példa segítségével. Hozzon létre egy elem nevű szöveges fájlt.txt a következő tartalommal.
tételek.txt
egér A4Tech
nyomtató HP $200
egyszerű, ha például:
a következő parancs elolvassa az elemek tartalmát.TXT fájl, majd ellenőrizze a 3. mező értéke minden sorban., Ha az érték üres, akkor hibaüzenetet nyomtat a sorszámmal.
kimenet:
if-else példa:
a következő parancs kinyomtatja az elem árát, ha a 3.mező létezik a sorban, különben hibaüzenetet nyomtat.
else print “tétel ára” $3} ” tétel.,txt
kimenet:
if-else-if példa:
amikor a következő parancs végrehajtásra kerül a terminálról, akkor a felhasználó bemenetet kap. A bemeneti értéket minden if feltételhez hasonlítjuk, amíg a feltétel igaz. Ha bármely feltétel valóra válik, akkor kinyomtatja a megfelelő fokozatot. Ha a bemeneti érték nem felel meg semmilyen feltételnek, akkor a nyomtatás sikertelen lesz.,
végzünk mark < “-“
ha (mark >= 90) print “A+”
else if( mark >= 80) print “Egy”
else if( mark >= 70) print “B+”
más print “Sikertelen” }’
Teljesítmény:
Ugrás a Tartalomhoz
awk változók
A nyilatkozat awk változó hasonló a nyilatkozat a shell változó. Különbség van a változó értékének olvasásában., a ‘ $ ‘ szimbólumot a shell változó nevével együtt használjuk az érték olvasásához. De nincs szükség, hogy a ” $ ” awk változó olvasni az értéket.
egyszerű változóval:
a következő parancs egy “site” nevű változót deklarál, és egy karakterlánc értéket rendel hozzá a változóhoz. A változó értékét a következő utasítás tartalmazza.
Output:
változó használatával adatokat nyerhet egy
fájlból a következő parancs a “nyomtató” szót keresi a fájlelemekben.txt. Ha a fájl bármely sora “nyomtatóval” kezdődik, akkor az 1., 2. és 3. mező értékét három változóba tárolja. a név és az árváltozók nyomtatásra kerülnek.
print “item price=” price} ” items.,txt
kimenet:
ugrás a tartalomra
awk tömbök
mind a numerikus, mind a kapcsolódó tömbök használhatók awk-ban. Array változó nyilatkozat awk ugyanaz, mint más programozási nyelvek. A tömbök egyes felhasználási módjai ebben a részben jelennek meg.
asszociatív tömb:
a tömb indexe az asszociatív tömb bármely karakterlánca lesz. Ebben a példában egy három elemből álló asszociatív tömböt deklarálnak és kinyomtatnak.,
kimenet:
numerikus tömb:
három elemből álló numerikus tömböt deklarálnak és kinyomtatnak a lap elválasztásával.
kimenet:
ugrás a tartalomra
awk loop
három típusú hurkot támogat az awk. Ezeknek a hurkoknak a használatát itt három példa segítségével mutatjuk be.
while loop:
while loop that is used in the following command will iterate for 5 times and exit from the loop for break statement.,
Teljesítmény:
A hurok:
A hurok, hogy használják az alábbi awk parancs számolja ki az összeget, 1-től 10-ig, majd nyomtassa ki az értéket.,
Output:
Do-While Loop:
A do-while loop a következő paranccsal minden páros számot kinyomtatunk 10-től 5-ig.,
while (counter > 5) }’
Output:
ugrás a tartalomra
awk az első oszlop nyomtatásához
bármely fájl első oszlopa kinyomtatható az AWK $1 változójának használatával. De ha az első oszlop értéke több szót tartalmaz, akkor csak az első oszlop első szava nyomtat. Egy adott határoló használatával az első oszlop megfelelően nyomtatható. Hozzon létre egy diák nevű szöveges fájlt.,txt a következő tartalommal. Itt az első oszlop két szó szövegét tartalmazza.
diákok.,txt
Abir Hossain 35<sup>th</sup> batch
John Abraham 40<sup>th</sup> batch
Run awk command without any delimiter. The first part of the first column will be printed.,
futtassa az awk parancsot a következő határolóval. Az első oszlop teljes része kinyomtatásra kerül.
kimenet:
ugrás a tartalomra
awk az utolsó oszlop kinyomtatásához
$(NF) változó használható bármely fájl utolsó oszlopának kinyomtatásához. A következő awk parancsok nyomtatják ki a hallgatók utolsó oszlopának utolsó részét és teljes részét.txt fájl.,
$ awk-F ‘\\s\ \ s’ ‘{print $(NF)} ‘ diákok.txt
kimenet:
ugrás a tartalomra
awk a grep
grep egy másik hasznos parancs a Linux számára, hogy bármilyen szabályos kifejezés alapján keressen tartalmat egy fájlban. A következő példában látható, hogy mind az awk, mind a grep parancsok együtt használhatók. a grep parancs a munkavállaló azonosítójának, az “1002” – nek a munkavállalótól származó információinak keresésére szolgál.txt fájl. A grep parancs kimenete bemeneti adatként kerül elküldésre az awk-nak., Az 5% – os bónuszt az awk command ‘1002’ személyi igazolványa alapján számolják és nyomtatják ki.
$ grep ‘1002’ alkalmazott.txt / awk-F’ \t ‘{ print $2 ” kap $” ($3*5)/100 “bónusz”}’
kimenet:
Go to Content
awk with bash file
mint más Linux parancs, awk parancs is használható egy BASH script. Hozzon létre egy customers nevű szöveges fájlt.txt a következő tartalommal. A fájl minden sora négy mezőre vonatkozó információkat tartalmaz., Ezek az ügyfél azonosítója, neve, címe és mobilszáma, amelyeket ” / ” választ el egymástól.
ügyfelek.txt
Hozzon létre egy item_search nevű Bash fájlt.bash a következő script. A szkript szerint az állami értéket a felhasználótól veszik át, majd az ügyfelekben keresik.txt fájl grep parancs, majd át az awk parancsot bemenetként. Az Awk parancs minden sor 2. és 4. mezőjét olvassa el. Ha a bemeneti érték megegyezik az ügyfelek bármely állami értékével.txt fájl akkor kinyomtatja az ügyfél nevét és mobilszámát, ellenkező esetben kinyomtatja a “nem található ügyfél”üzenetet.,
item_search.bash
futtassa a következő parancsokat a kimenetek megjelenítéséhez.
$ bash item_search.bash
kimenet:
ugrás a tartalomra
awk a sed
egy másik hasznos kereső eszköz a Linux sed. Ez a parancs használható mind a fájl szövegének keresésére, mind cseréjére. A következő példa az awk parancs használatát mutatja sed paranccsal. Itt a sed parancs megkeresi az összes alkalmazott nevét ” J ” – vel, majd bemenetként átadja az awk parancsot., az awk a formázás után kinyomtatja az alkalmazott nevét és azonosítóját.
$ sed-n ‘/J / p ‘ alkalmazott.txt / awk-F’ \t ‘{ printf “%S (%s) \ n”, $2, $1 }’
kimenet:
ugrás a tartalomra
következtetés:
az adatok megfelelő szűrése után az awk paranccsal különböző típusú jelentéseket hozhat létre bármilyen táblázatos vagy elhatárolt adat alapján. Remélem, hogy megtanulhatja, hogyan működik az awk parancs az ebben a bemutatóban bemutatott példák gyakorlása után.