next up previous contents
Next: Shell Scripts Up: awk 工具 Previous: awk 與正規表示法   Contents

實機練習題

  1. 共同要求:
    1. 在家目錄下建立 zzz 目錄。
    2. 切換工作目錄到 zzz,所有練習腳本皆存在此目錄。
    3. 腳本必須可執行。
  2. 下載檔案 awk-a.csv,以 awk 處理 awk-a.csv 檔,第一欄位 no,第二欄位 name,第三欄位是 score1,第四欄位是 score2,第五欄位是 grade。
    1. 寫一腳本 awk-a1.sh 計算 awk-a.csv 檔中所有學生的 score1 平均分數及 score2 的平均分數,輸出只列出所有學生 score1 平均分數及所有學生 score2 的平均分數,中間用 TAB 隔開。存成 awk-a1-result。
    2. 寫一腳本 awk-a2.sh 計算 awk-a.csv 檔中學生的 score1 及 score2 的平均分數,列出「目前筆數 TAB 姓名 TAB 目前score1平均 TAB 目前score2平均」。存成 awk-a2-result。
    3. 寫一腳本 awk-a3.sh 找到 no 大於 10 的學生,列印「目前筆數 TAB grade TAB 姓名 TAB score1與score2平均值」。存成 awk-a3-result。
    4. 寫一腳本 awk-a4.sh 配合正規表示式找到名字是 r 開頭的學生,列印「目前筆數 TAB grade TAB 姓名 TAB score1與score2平均值」。存成 awk-a4-result。
  3. 下載檔案 awk-b.csv,以 awk 處理 awk-b.csv 檔,第一行是各欄位名稱,不算筆數而且必須特別處理。
    1. 寫一腳本 awk-b1.sh 計算 awk-b.csv 檔中學生的 score1 及 score2 的平均分數,只列出 score1 及 score2 的平均分數,中間用 TAB 隔開,第一行列印「平均一 TAB 平均二」。存成 awk-b1-result。
    2. 寫一腳本 awk-b2.sh 計算 awk-b.csv 檔中學生的 score1 及 score2 的平均分數,列出「目前筆數 TAB 姓名 TAB 目前score1平均 TAB 目前score2平均」,第一行列出「筆數 TAB 姓名 TAB 累計平均1 TAB 累計平均2」。存成 awk-b2-result。
    3. 寫一腳本 awk-b3.sh 找到 no 大於 10 的學生,列印「目前筆數 TAB grade TAB 姓名 TAB score1與score2平均值」,第一行列出「筆數 TAB 成績 TAB 姓名 TAB 兩科平均」。存成 awk-b3-result。
    4. 寫一腳本 awk-b4.sh 配合正規表示式找到名字是 r 開頭的學生,列印「目前筆數 TAB grade TAB 姓名 TAB score1與score2平均值」,第一行列出「筆數 TAB 成績 TAB 姓名 TAB 兩科平均」。存成 awk-b4-result。
  4. 下載檔案 passwd,以 awk 處理 passwd 檔,passwd 檔的以冒號 ":" 分隔欄位。
    1. 寫一腳本 passwd1.sh 列印第 1 及 3 欄位,中間以 TAB 分隔。存成 passwd1-result。
    2. 寫一腳本 passwd2.sh 列出 UID 大於 10 且小於 100 的帳號,印出格式為「目前處理的行數 TAB 帳號名稱 TAB UID TAB 該行有多少欄位」。存成 passwd2-result。
    3. 寫一腳本 passwd3.sh 查閱第 3 欄位小於 7 以下的數據,並且僅列出第 3, 1, 5 欄位,中間以 TAB 分隔,但是分隔符號的設定必須在 awk 程式本身,而不是使用 -F 選項,觀察其第一行輸出。存成 passwd3-result。
    4. 同上題,寫一腳本 passwd4.sh 利用關鍵字 BEGIN 讓第一行正確顯示。存成 passwd4-result。
    5. 將 passwd4.sh 的 awk 程式寫在 passwd5.awk,再寫一腳本 passwd5.sh 以 awk -f 選項指定執行 passwd.awk 完成上一題的要求。結果存成 passwd5-result。

next up previous contents
Next: Shell Scripts Up: awk 工具 Previous: awk 與正規表示法   Contents
2019-06-17