======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