የአዊWK ትዕዛዞችን እና ስክሪፕቶችን እንዴት እንደሚጽፉ

ትዕዛዞች, አገባብ, እና ምሳሌዎች

የ awk ትእዛዝ የጽሑፍ ፋይሎችን ለማዘጋጀት ወይም ለመተንተን ኃይለኛ ስልት ነው. በተለይም በመስመር (ረድፎች) እና በአምዶች የተቀመጡ የውሂብ ፋይሎች ናቸው.

ቀላል የ awk ትዕዛዞች ከትዕዛዝ መስመሩ ሊተገበሩ ይችላሉ. በጣም ውስብስብ ተግባራት እንደ (awk ስክሪፕቶች) ተብለው በፋይል (አኬክ ፊደሎች) ውስጥ ሊጻፉ ይገባል.

የ awk ትእዛዝ መሰረታዊ ቅርፀት ይመስላል

awk 'ንድፍ {action}' input-file> output-file

ይህ ማለት የግብአት ፋይሉን እያንዳንዱን መስመር ይውሰዱ. በመስመሩ ውስጥ የተንጠለጠሉበት መስፈርት ድርጊቱን መስመር ላይ እንዲተገበር እና የውጤት-ፋይሉን በሚከተለው መስመር ላይ መጻፍ. ምሳሌው ከተተወ, እርምጃው በሁሉም መስመሮች ላይ ተተግብሯል. ለምሳሌ:

awk '{print $ 5}' table1.txt> output1.txt

ይህ መግለጫ የያንዳንዱ መስመር 5 ኛ አምድ ክፍልን ይወስድና በጽሑፍ ፋይሉ «output.txt» ላይ እንደ መስመር ይጽፋል. ተለዋዋጭ '$ 4' ሁለተኛው ዓምድ ነው. በተመሳሳይ $ 1, ሁለተኛ እና ሶስተኛ ዓምዶች በ $ 1, $ 2, $ 3, ወዘተ. መድረስ ይችላሉ. በነባሪ ዓምዶች በቦታዎች ወይም ትሮች (ነጭ ቦታ ማለት ነው) ተወስነዋል. ስለዚህ, የግቤት ፋይል «table1.txt» እነዚህን መስመሮች ቢኖሩት:

1, Justin Timberlake, Title 545, ዋጋ $ 7.30, Taylor Swift, Title 723, ዋጋ $ 7.90, Mick Jagger, ርዕስ 610, ዋጋ $ 7.90, Lady Gaga, ርዕስ 118, ዋጋ $ 7.30 5, Johnny Cash, ርዕስ 482, ዋጋ $ 6.50 6, ኤልቪስ ፕሪሊይ, ርዕስ 335, ዋጋ $ 7.30 7, ጆን ላነን, ርእስ 271, ዋጋ $ 7.90 8, ማይክል ጃክሰን, ርእስ 373, ዋጋ $ 5.50

ከዚያ ትዕዛዙ የሚከተሉትን ለውጦች ወደ "output1.txt" ውጤት ፋይል ይጽፋል.

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

የአምድ አምዳዩ እንደ ኮማ የመሳሰሉ ክፍተቶች ወይም ትሮች ካላደረጉ, በ Awk ዓረፍተ ነገር እንደሚከተለው መጥቀስ ይችላሉ-

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

ዓምዶች በኮማ ውስጥ እንዲቆዩ የሚወሰዱ ከሆነ ከያንዳንዱ መስመር ሦስት አምድ ውስጥ ያለውን ኤለመንት ይመርጣል. ስለዚህ ውጤቱ, በዚህ ጉዳይ ላይ የሚከተለው ይሆናል:

ርእስ 545 ርእስ 723 ርዕስ 610 ርዕስ 118 ርእስ 482 ርዕስ 335 ርእስ 271 ርእስ 373

በጥንድ ቅንፎች ('{', '}') ውስጥ ያለው የዝርዝር መግለጫዎች እገዳ ይባላሉ. በአንድ ሁኔታ ላይ ያለ ሁኔታዊ አገላለጽ ካስቀመጡ, በማጥቂያው ውስጥ ያለው ዓረፍተ ሐሳብ ሁኔታው ​​እውነት ከሆነ ብቻ ይፈጸማል.

awk $ 7 == "\ $ 7.30" {print $ 3} 'table1.txt

በዚህ ሁኔታ, ሁኔታው ​​$ 7 == "$ 7,30" ነው, ይህም ማለት አምድ 7 ላይ ያለው ክፍል ከ $ 7.30 ጋር እኩል ነው ማለት ነው. በዶላር ምልክት ፊት ለፊት ያለው የጀርባ መቆጣጠሪያው $ 7 ን እንደ ተለዋዋጭ ከመተርጎምና የገባውን ዶላር ቃል በቃል ለመውሰድ ይጠቀምበታል.

ስለዚህ ይህ የ Awk ዓረፍተ ሐሳብ በ 7 ኛው መስመር ላይ በ "$ 7.30" ያለውን እያንዳንዱ መስመር በ 3 ኛ ረድፍ ላይ ያለውን ክፍል ያትማል.

እንዲሁም መደበኛ ሁኔታዎችን እንደ ሁኔታው ​​ሊጠቀሙበት ይችላሉ. ለምሳሌ:

awk '/ 30 / {print $ 3}' table1.txt

በሁለቱ መዝጊያዎች ('/') መካከል ያለው ሕብረቁምፊ መደበኛ አገላለጽ ነው. በዚህ አጋጣሚ, የ "30." ሕብረቁምፊ ብቻ ነው ይህም ማለት አንድ መስመር የ "30" ሕብረቁምፊን የያዘ ከሆነ ስርዓቱ በዚያ መስመር 3 ቱም ረድፍ ላይ ያለውን ክፍል ያትማል. ከላይ በተሰጠው ምሳሌ ውስጥ ያለው ውጤት የሚሆነው:

Timberlake, Gaga, Presley,

የቡድን አባሎች አስረጅ ቁጥሮች (ቁጥሮች) ቁጥሮች (ለምሳሌ, ቁጥሮች) ቁጥሮች (ለምሳሌ አስረካቢዎች)

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

የአሁኑን ረድፍ ($ 1, $ 2, ወዘተ) ያሉ ተለዋዋጭ ከአማራጭ በተጨማሪ የተጠናቀቀውን ረድፍ (መስመር) እና በ "NF" ተለዋዋጭ ተለዋዋጭ ተለዋዋጭ (variable) $ 0 አለ.

በዚህ ምሳሌ ውስጥ አዲስ ተለዋዋጮችንም መግለፅ ይችላሉ-

awk '{sum = 0; ለ (col = 1; col <= NF; col ++) sum + = $ coll; የታተመ ድምር; } '

ይሄ እያንዳንዱ የእያንዳንዱ ረድፍ ክፍሎች ድምርን ያሰላታል እና ያትታል.

Awk መግለጫዎች በተደጋጋሚ ከትእዛዞች ጋር ይቀላቀላሉ .