實機練習題

  1. 共同要求:
    1. 在家目錄下建立 zzz 目錄。
    2. 切換工作目錄到 zzz,所有練習腳本皆存在此目錄。
    3. 腳本必須可執行。
    4. 檔案導向都是執行.sh腳本命令時導向,不是寫在腳本內導向。檔案導向到 /tmp/$mysid.$evalname 目錄,其中變數 $mysid 為自己的學號,$evalname 為評分程式名稱不加附檔名,目錄若不存在,必須自行建立。
  2. 練習題
    1. 下載檔案 man.conf
    2. 寫腳本以 sed 處理 man.conf 執行以下動作,執行腳本將結果導向到「輸出檔案」,不要做任何的更動。
      1. 腳本 sed1.1.sh,輸出檔案 sed1.1.txt
        1. 刪除 50 至 120 行。
        2. 第 63 行後增加三行。
          123ASD
          KJH983
          apem34kq98
          
        3. 第 30 至 145 行取代成:
          abcdefgh
          9876543
          3333333
          
      2. 腳本 sed1.2.sh,輸出檔案 sed1.2.txt
        1. 只列出第 103 至 120 行。
        2. 刪除註解行及空白行。
        3. 第 17 行至最後一行刪除,且將 man 取代成 SSEEDD。
    3. 使用 sed 處理 man.conf 檔,將以下 sed 要執行的動作寫在 src 檔,再寫腳本執行 sed 時以 -f 選項指定 src 檔,執行腳本將結果導向到「輸出檔案」,不要做任何的更動。
      1. 腳本 sed2.1.sh,src 檔 sed2.1.src,輸出檔案 sed2.1.txt
        1. 刪除 5 至 6 行。
        2. 第 33 行後增加二行。
          BBKJH983
          Capem34kq98
          
        3. 第 40 至 45 行取代成:
          abcdefgh
          9876543
          3333333
          
      2. 腳本 sed2.2.sh,src 檔 sed2.2.src,輸出檔案 sed2.2.txt
        1. 列出第 3 至 142 行。
        2. 刪除註解行及空白行。
        3. 第 102 行至最後一行刪除
        4. 將 man 取代成 SSEEDD。
    4. 下載檔案 re3.txt,撰寫以下腳本:
      1. re3.txt 的算術式格式:(a,b,X),其中 a b 是正負數字,X 是 +-*/ 加減乘除運算子。
      2. sed3.1.sh 處理 re3.txt 將 (a,b,X) 取代成 aXb=,結果導向到 sed3.1.txt。
      3. sed3.2.sh 處理 sed3.1.txt,將算術式中減負數 (--),取代成 +,結果導向到 sed3.2.txt。
      4. sed3.3 處理 sed3.2.txt,將算術式中加負數 (+-),取代成 -,結果導向到 sed3.3.txt。
      5. sed3.sh 一次處理 re3.txt,完成 sed3.1.sh sed3.2.sh sed3.3.sh 所做動作,結果存成 sed3.txt,不要做任何的更動。
    5. 下載檔案 gradelist.txt,撰寫以下腳本:
      1. 使用 sed, tr 命令,配合正規表示法、管線處理。
      2. sed4.1.sh 處理 gradelist.txt,轉換成字典陣列需要的格式,名字及成績都用雙引號括起來,結果導向到 sed4.1.txt。
      3. sed4.2.sh 處理 sed4.1.txt,tr 命令將換行符號改成空白字元,結果導向到 sed4.2.txt。
      4. sed4.3.sh 處理 sed4.2.txt,sed 命令將行尾的空白字元改成換行符號,結果導向到 sed4.3.txt。
      5. sed4.sh 處理 gradelist.txt,完成 sed4.1.sh sed4.2.sh sed4.3.sh 所有動作,輸出轉換後的結果導向到 sed4.txt,輸出範例如下:
        ["dywang"]="60" ["linda"]="80" ["peter"]="92" ["rita"]="87"