shell中sed的使用及選項, 編輯器中的&作用


1. sed會逐行從文件中讀取數據, 再對數據處理后顯示到屏幕, 再進行下一行的處理.

  sed  '4d'  file.txt             # 刪除文件中第4行

  sed  '2,6d'  file.txt          # 刪除文件中的2-6行

  sed  '5,$d'  file.txt          # 從第5行刪除到最后一行

  sed  '/root/d'  file.txt       # 刪除含root字符的行

  sed  '/root/,5d' file.txt     # 前5行中有root則從root行刪到第5行, 注意第5行會保留

  sed  '/root/,+3d'  file.txt  # 刪掉有root行, 並向后刪3行.

  sed  '/root/!d'  file.txt      # 取反刪除, 留下root行

  sed  '1~2d'  file.txt         # 刪除奇數行, 從1開始, 每隔2行刪除

  sed  '0~2d'  file.txt    # 刪除偶數行, 從0開始, 每隔2行刪除

 

2. sed中的正則使用:

  sed同grep命令一樣, 默認不支持擴展元字符, 解決辦法:

  1. 將擴展元字符加對應斜線變為基本元字符.

  2. sed -r 加入-r參數, 使其支持擴展元字符.

 

3. sed的查找替換使用:

  替換的使用:

  1. sed  -r  's/xx/XX/'               # 替換xx為XX, 只替換每行的第一個

  2. sed  -r  's/xx/XX/g'              # 替換整行中的所有xx為XX

  3. sed  -r  's/xx/XX/gi'             # 忽略行中內容的大小寫進行匹配替換

  查找的使用:

  1. sed  -r  '/xx/d'                      # 查找時不要使用s, 查找xx並刪除

 

4. sed的命令選項 (注意是命令, 在引號中使用的, 注意要和-后的參數區分):

  

 

 

5. sed的功能選項( 即-后的參數值, ):

  

 

 

6. &符合的作用, 就是代表, 代指, 代替的作用

  如在vim中需要給3-5行內容注釋掉的寫法如下:

  :3,5 s/\(.*\)/#\1/  # 解釋, vi中模式識別基本正則元字符, 括號中.*代表整行, 括號兩邊使用\給轉義了, 這正是shell中正則基本元字符的形式

  :3,5 s/.*/#&/    # 作用同上, &符合就代替了前面.*, 即整行內容

  :% s/.*/#&/    # %表示作用到每一行, &符合就代替了前面.*, 即整行內容

  注意&號代表的是前面正則匹配到的內容, 如果匹配到的是行中的一個字符, 則就是在這個字符前加#, 注意區分正則匹配到的到底是什么

  :3,5 s/^/#/    # 3-5行加注釋, 解讀: 把3-5行的開始符號替換為#號.

  以上在vi中的寫法, 在sed命令中用法一模一樣, 如下:

  sed  '3,5s/\(.*\)/#\1/'  file.txt        # 如果使用-r參數, 則括號兩邊的轉義可去掉, 因為-r參數識別的就是擴展元字符

  sed  '/root/s///' file.txt    # sed也有這種用法, s前面的內容可理解為替換的作用范圍, 3,5或者/root/都是, 規定作用行數,或包含root的行

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM