Bawo ni lati kọ Awọn AWK Awọn ofin ati awọn iwe afọwọkọ

Awọn aṣẹ, isopọ, ati apeere

Ilana apk jẹ ọna ti o lagbara fun ṣiṣe tabi itupalẹ awọn faili ọrọ-ni pato, awọn faili data ti a ṣeto nipasẹ awọn ila (awọn ori ila) ati awọn ọwọn.

Awọn ofin fifẹ rọrun le ṣee ṣiṣe lati laini aṣẹ . Awọn iṣẹ-ṣiṣe ti o pọju sii yẹ ki o kọ bi eto awk (awọn akọsilẹ awk ti a npe ni) si faili kan.

Ipilẹ kika ti apk command kan dabi eyi:

ìlànà apk 'igbese}' faili titẹ-faili> faili-ṣiṣẹ

Eyi tumọ si: ya ila kọọkan ti faili titẹsi; ti o ba ti ila naa ni awọn ilana naa lo iṣẹ naa si ila ki o si kọ ila ti o ni opin si faili-ṣiṣe. Ti o ba ti yọ apẹrẹ naa kuro, a yoo lo igbese naa si gbogbo ila. Fun apere:

awk '{titẹ $ 5}' table1.txt> output1.txt

Gbólóhùn yii gba ifarawe ti iwe 5 ti ila kọọkan ati ki o kọwe si bi ila ni faili ti o gbejade "output.txt". Awọn ayípadà '$ 4' tọka si iwe keji. Bakannaa o le wọle si akọkọ, keji, ati iwe-kẹta, pẹlu $ 1, $ 2, $ 3, ati bẹbẹ lọ. Awọn taabu ti aiyipada ko ni pe nipasẹ awọn aaye tabi awọn taabu (eyiti a pe ni aaye funfun). Nitorina, ti faili faili titẹ sii "table1.txt" ni awọn ila wọnyi:

1, Justin Timberlake, Akọle 545, Owo $ 7.30 2, Taylor Swift, Akọle 723, Owo $ 7.90 3, Mick Jagger, Akọle 610, Owo $ 7.90 4, Lady Gaga, Akọle 118, Owo $ 7.30 5, Johnny Cash, Akọle 482, Owo $ 6.50 6, Elvis Presley, Akọle 335, Owo $ 7.30 7, John Lennon, Akọle 271, Owo $ 7.90 8, Michael Jackson, Akọle 373, Owo $ 5.50

Lẹhin naa aṣẹ naa yoo kọ awọn ila wọnyi si faili ti o gbejade "output1.txt":

545, 723, 610, 118, 482, 335, 271, 373,

Ti o ba jẹ olupin ori iwe jẹ nkan miiran ju awọn alafo tabi awọn taabu, gẹgẹbi apẹrẹ, o le ṣafihan pe ninu gbolohun awk yii gẹgẹbi atẹle yii:

awk -F, '{titẹ $ 3}' table1.txt> output1.txt

Eyi yoo yan ohun ti o wa lati iwe-iwe 3 ti ila kọọkan ti a ba pe awọn ọwọn lati yapa nipasẹ apẹrẹ kan. Nitorina ẹda, ni idi eyi, yoo jẹ:

Title 545 Title 723 Title 610 Title 118 Title 482 Title 335 Title 271 Title 373

Àtòkọ awọn gbolohun inu awọn akọmọ wiwọn ('{', '}') ni a pe ni iwe. Ti o ba fi ọrọ ikosile kan han niwaju iwaju kan, alaye ti o wa ninu apo naa yoo paṣẹ nikan ti ipo naa ba jẹ otitọ.

awk '$ 7 ==' \ $ 7.30 '{titẹ sita $ 3}' table1.txt

Ni idi eyi, ipo naa jẹ $ 7 == "\ $ 7.30", eyi ti o tumọ si pe ipinnu ni iwe 7 jẹ dọgbadọ si $ 7.30. A lo awọn fifọ ni iwaju ti ami dola lati dènà eto lati ṣe itumọ $ 7 gẹgẹbi iyipada ati dipo mu ami dola naa gangan.

Nitorina alaye iwk yii yii jade jade ni iwe-iwe 3 ti ila kọọkan ti o ni "$ 7.30" ni iwe 7.

O tun le lo awọn idaniloju deede bi ipo. Fun apere:

awk '/ 30 / {titẹ $ 3}' table1.txt

Awọn okun laarin awọn iyipo meji ('/') jẹ ikosile deede. Ni idi eyi, o jẹ pe okun "30." Eyi tumọ si pe ila kan ni awọn okun "30", eto naa n jade jade ni opo ti o wa ni ẹgbẹ kẹta ti ila naa. Ẹjade ni apẹẹrẹ loke yoo jẹ:

Timberlake, Gaga, Presley,

Ti awọn eroja tabili jẹ nọmba awk le ṣiṣe ṣiṣeṣiro lori wọn bi ninu apẹẹrẹ yi:

awk '{titẹ ($ 2 * $ 3) + $ 7}'

Yato si awọn oniyipada pe awọn ẹya ara ẹrọ ti a ti n lọwọlọwọ ($ 1, $ 2, ati bẹbẹ lọ) wa iyatọ $ 0 eyiti o tọka si ila ti o pari (laini), ati NF ayípadà ti o wa si nọmba awọn aaye.

O tun le ṣafihan awọn oniyipada titun bi ninu apẹẹrẹ yi:

awk '{sum = 0; fun (col = 1; col <= NF; col ++) apao + = $ col; titẹ sita; } '

Eyi n ṣe akopọ ati tẹjade apao gbogbo awọn eroja ti ila kọọkan.

Awọn ọrọ Awk wa ni idapọpo nigbagbogbo pẹlu awọn ofin Sibẹ .