כיצד להדפיס טווח עמודות באמצעות הפקודה `awk`

How Print Range Columns Using Awk Command



הפקודה `awk` היא אחת מהפקודות הרבות בהן ניתן להדפיס טווח עמודות מנתונים טבלאריים ב- Linux. ניתן להשתמש בפקודה `awk` ישירות מהטרמינל על ידי הפעלת קובץ הסקריפט` awk`. במדריך זה נראה לך כיצד להדפיס טווח עמודות מנתונים טבלאיים.

דוגמה 1: הדפס טווח עמודות מפלט פקודה

הפקודה הבאה תדפיס את העמודה השנייה, השלישית והרביעית מפלט הפקודה, 'לס -ל '. כאן מספרי העמודות מפורטים במפורש, אך פקודה יעילה יותר להדפסת אותו טווח עמודות מוצגת בדוגמה הבאה.







$ls | awk '{הדפס $ 2, $ 3, $ 4}'

הפלט הבא מופק על ידי הפקודה למעלה.





דוגמה 2: הדפס את טווח העמודות מקובץ באמצעות א ל לוּלָאָה

כדי לעקוב אחר דוגמה זו ושאר הדוגמאות במדריך זה, צור קובץ טקסט בשם marks.txt עם התוכן הבא :





מזהה CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

הפקודה `awk` הבאה תדפיס את שלוש העמודות הראשונות של marks.txt. ה ל לולאה משמשת להדפסת ערכי העמודות, והלולאה כוללת שלושה שלבים. ה NF משתנה מציין את המספר הכולל של שדות או עמודות של הקובץ.

$חתולmarks.txt
$awk '{עבור (i = 1; i<=NF-1;i++) printf $i' '; print ''}'marks.txt

הפלט הבא יוצר על ידי הפעלת הפקודה. הפלט מראה את התלמיד תעודות זהות והסימנים עבור CSE203 ו CSE102 .



דוגמה 3: הדפס את טווח העמודות על ידי הגדרת משתני התחלה וסיום

הפקודה הבאה 'awk' תדפיס את שלוש העמודות הראשונות מפלט הפקודה 'ls -l' על ידי אתחול מתחיל ו סִיוּם משתנים. כאן, הערך של מתחיל המשתנה הוא 1, והערך של סִיוּם משתנה הוא 3. משתנים אלה חוזרים על מעגל לולאה עבור הדפסת ערכי העמודות.

$ls | awk 'התחל {first = 1; אחרון = 3}
{עבור (i = הראשון; i

הפלט הבא יופיע לאחר הפעלת הפקודה. הפלט מציג את שלושת ערכי העמודות הראשונות של הפלט, 'ls -l'.

דוגמה 4: הדפס טווח עמודות מקובץ עם עיצוב

הפקודה `awk` הבאה תדפיס את שלוש העמודות הראשונות של marks.txt באמצעות printf ומפריד שדות פלט ( OFS ). כאן, לולאת ה- for כוללת שלושה שלבים, ושלוש עמודות יודפסו ברצף מהקובץ. OFS משמש כאן להוספת רווח בין עמודות. כאשר ערך הנגד של הלולאה (i) שווה ל סִיוּם משתנה, ואז נוצרת שורה חדשה ( n).

$חתולmarks.txt
$awk -v הַתחָלָה=1 -v סוֹף=3 '{עבור (i = התחלה; i<=end;i++) printf('%s%s',
$ i, (i == סוף)? ' n': OFS)} '
marks.txt

הפלט הבא ייווצר לאחר הפעלת הפקודות שלעיל.

דוגמה 5: הדפס את טווח העמודות מקובץ באמצעות משפט מותנה

הפקודה `awk` הבאה תדפיס את העמודות הראשונות והאחרונות מקובץ באמצעות לולאת for ו- משפט if. כאן, לולאת ה- for כוללת ארבעה שלבים. ה מתחיל ו סִיוּם משתנים משמשים בתסריט כדי להשמיט את העמודה השנייה והשלישית מהקובץ באמצעות תנאי if. משתנה OFS משמש להוספת רווח בין העמודות, ומשתנה ORS משמש להוספת קו חדש ( n) לאחר הדפסת העמודה האחרונה.

$חתולmarks.txt
$awk -v הַתחָלָה=2 -v סוֹף=3 '{עבור (i = 1; i<=NF;i++)
אם (i> = התחל && i<=end) continue;
else printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

הפלט הבא יופיע לאחר הפעלת הפקודות שלעיל. הפלט מציג את העמודות הראשונות והאחרונות של marks.txt.

דוגמה 6: הדפס את טווח העמודות מקובץ באמצעות המשתנה NF

הפקודה `awk` הבאה תדפיס את העמודות הראשונות והאחרונות מהקובץ באמצעות משתנה NF. אין שימוש בלולאות או בהצהרות מותנות להדפסת ערכי העמודות. NF מציין את מספר השדות. יש ארבע עמודות ב- marks.txt. $ (NF-3) מגדיר את העמודה הראשונה, ו- $ NF מציין את העמודה האחרונה.

$חתולmarks.txt
$awk '{print $ (NF-3)' '$ NF}'marks.txt

הפלט הבא מופק על ידי הפעלת הפקודות שלעיל. הפלט מציג את העמודות הראשונות והאחרונות של marks.txt.

דוגמה 7: הדפס את טווח העמודות מקובץ באמצעות substr () ו- index ()

הפונקציה index () מחזירה מיקום אם ערך הארגומנט השני קיים בערך הארגומנט הראשון. הפונקציה substr () יכולה לקחת שלושה ארגומנטים. הארגומנט הראשון הוא ערך מחרוזת, הארגומנט השני הוא מיקום ההתחלה, והארגומנט השלישי הוא האורך. הארגומנט השלישי של substr () מושמט בפקודה הבאה. מכיוון שהעמודה מתחילה מ- $ 1 בפקודה `awk`, הפונקציה index () תחזיר $ 3, והפקודה תדפיס מ- $ 3 ל- $ 4.

$חתולmarks.txt
$awk '{sub print print ($ 0, index ($ 0, $ 3))}}'marks.txt

הפלט הבא יוצר על ידי הפעלת הפקודות שלעיל.

דוגמה 8: הדפס ברצף טווח עמודות מקובץ באמצעות printf

הפקודה `awk` הבאה תדפיס את העמודה הראשונה, השנייה והשלישית של marks.txt על ידי הגדרת מספיק מקום לעשרה תווים.

$חתולmarks.txt
$awk '// {printf' %10s %10s %10s n ', $ 1, $ 3, $ 2}'marks.txt

הפלט הבא יוצר על ידי הפעלת הפקודות שלעיל.

סיכום

ישנן דרכים שונות להדפיס את טווח העמודות מפלט הפקודה או מקובץ. הדרכה זו מראה כיצד הפקודה `awk` יכולה לסייע למשתמשי Linux להדפיס תוכן מנתונים טבלאיים.