======Shell Script練習====== =====Sed===== **語法結構** sed [option] /RE位置/或列位置/功能代碼/比對條件RE/處理字串/gp(g為全域;p印出;g或p或g and p) 目標檔案 - [[linux:script:RE|RE為正規表示法]] - 功能代碼:d 刪除;s 搜尋;p 輸出到螢幕 - 通常不會對目標檔案內容造成影響(除非加上選項 -i ) **用法練習** Sample資料檔: hA15:x:BB:B25::/home/hA15:/bin/bash hA16:x:B23:B26::/home/hA16:/bin/bash hA17:x:B24:B27::/home/hA17:/bin/bash hA18:x:B25:B28::/home/hA18:/bin/bash hA19:x:B26:B29::/home/hA19:/bin/bash hA20:x:B27:B30::/home/hA20:/bin/bash hA21:x:B28:B31::/home/hA21:/bin/bash hAB:x:B29:B32::/home/hAB:/bin/bash hA23:x:B30:B33::/home/hA23:/bin/bash hA24:x:B31:B34::/home/hA24:/bin/bash hA25:x:B32:B35::/home/hA25:/bin/bash hA26:x:B33:B36::/home/hA26:/bin/bash * **刪除1列至11列** $ sed '1,11d' sample hA26:x:B33:B36::/home/hA26:/bin/bash * **搜尋hA25字串並印出** $ sed '/hA25/p' sample hA15:x:BB:B25::/home/hA15:/bin/bash hA16:x:B23:B26::/home/hA16:/bin/bash hA17:x:B24:B27::/home/hA17:/bin/bash hA18:x:B25:B28::/home/hA18:/bin/bash hA19:x:B26:B29::/home/hA19:/bin/bash hA20:x:B27:B30::/home/hA20:/bin/bash hA21:x:B28:B31::/home/hA21:/bin/bash hAB:x:B29:B32::/home/hAB:/bin/bash hA23:x:B30:B33::/home/hA23:/bin/bash hA24:x:B31:B34::/home/hA24:/bin/bash hA25:x:B32:B35::/home/hA25:/bin/bash hA25:x:B32:B35::/home/hA25:/bin/bash hA26:x:B33:B36::/home/hA26:/bin/bash * **承上。只搜尋hA25那一列並印出** $ sed -n '/hA25/p' sample # -n:只有經過sed 特殊處理的那一行才會被列出來 hA25:x:B32:B35::/home/hA25:/bin/bash * **搜尋hA26那一列並刪除** $ sed '/hA25/d' sample hA15:x:BB:B25::/home/hA15:/bin/bash hA16:x:B23:B26::/home/hA16:/bin/bash hA17:x:B24:B27::/home/hA17:/bin/bash hA18:x:B25:B28::/home/hA18:/bin/bash hA19:x:B26:B29::/home/hA19:/bin/bash hA20:x:B27:B30::/home/hA20:/bin/bash hA21:x:B28:B31::/home/hA21:/bin/bash hAB:x:B29:B32::/home/hAB:/bin/bash hA23:x:B30:B33::/home/hA23:/bin/bash hA24:x:B31:B34::/home/hA24:/bin/bash hA25:x:B32:B35::/home/hA25:/bin/bash * **尋找hA字串並取代為FF(常用)** $ sed 's/hA/FF/g' sample FF15:x:BB:B25::/home/FF15:/bin/bash FF16:x:B23:B26::/home/FF16:/bin/bash FF17:x:B24:B27::/home/FF17:/bin/bash FF18:x:B25:B28::/home/FF18:/bin/bash FF19:x:B26:B29::/home/FF19:/bin/bash FF20:x:B27:B30::/home/FF20:/bin/bash FF21:x:B28:B31::/home/FF21:/bin/bash FFB:x:B29:B32::/home/FFB:/bin/bash FF23:x:B30:B33::/home/FF23:/bin/bash FF24:x:B31:B34::/home/FF24:/bin/bash FF25:x:B32:B35::/home/FF25:/bin/bash * **運用$ sed -n 's/hA/FF/p' sample 此法與上一個用法的結果一樣** FF15:x:BB:B25::/home/FF15:/bin/bash FF16:x:B23:B26::/home/FF16:/bin/bash FF17:x:B24:B27::/home/FF17:/bin/bash FF18:x:B25:B28::/home/FF18:/bin/bash FF19:x:B26:B29::/home/FF19:/bin/bash FF20:x:B27:B30::/home/FF20:/bin/bash FF21:x:B28:B31::/home/FF21:/bin/bash FFB:x:B29:B32::/home/FFB:/bin/bash FF23:x:B30:B33::/home/FF23:/bin/bash FF24:x:B31:B34::/home/FF24:/bin/bash FF25:x:B32:B35::/home/FF25:/bin/bash