使用者工具

網站工具


linux:sed

Shell Script練習

Sed

語法結構

sed [option] /RE位置/或列位置/功能代碼/比對條件RE/處理字串/gp(g為全域;p印出;g或p或g and p) 目標檔案
  1. 功能代碼:d 刪除;s 搜尋;p 輸出到螢幕
  2. 通常不會對目標檔案內容造成影響(除非加上選項 -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
linux/sed.txt · 上一次變更: 2013/07/06 01:28 (外部編輯)