Linux 命令之三 sed 命令

Sed 命令簡介

===========

sed(stream edit)作爲流編輯器是逐行處理的,默認將處理結果寫出到屏幕(stdout),並不會修改源文件。在工作中是一個非常實用的文本編輯工具。

sed 工作模式

  1. 將文件以行爲基本單位讀入到內存中

  2. 使用 sed 指定的匹配動作對每一行進行處理

  3. 處理完成後進行輸出,直到處理完最後一行結束,並不修改原文件內容

基本語法如下:

 sed [選項] '[定位符]處理動作' filename

sed 常用選項

sed 常用動作命令

sed 標誌位

sed 使用示例

sed 替換操作

 # 先查看示例文件內容
 % cat test.txt
 root:*:0:0:System Administrator:/var/root:/bin/sh
 
 # 替換文本中第一次出現的root爲aboboo
 % sed 's/root/aboboo/' test.txt
 aboboo:*:0:0:System Administrator:/var/root:/bin/sh
 
 # 替換文本中第二次出現的root爲aboboo,如果想替換第三次或者第四次,其實寫上對應的數字即可
 % sed 's/root/aboboo/2' test.txt
 root:*:0:0:System Administrator:/var/aboboo:/bin/sh
 
 # 全局替換,替換行中出現的所有root爲aboboo
 % sed 's/root/aboboo/g' test.txt
 aboboo:*:0:0:System Administrator:/var/aboboo:/bin/sh

sed 刪除操作

 # 先查看示例文件內容
 % cat d.txt
 1a
 2b
 3c
 4d
 5e
 6f
 
 # 在輸出結果中刪除2-4行,不修改原文件
 % sed '2,4d' d.txt
 1a
 5e
 6f
 
 # 刪除匹配a的行
 % sed '/a/d' d.txt
 2b
 3c
 4d
 5e
 6f
 
 # 在輸出結果中打印行號
 % sed '2,4d;=' d.txt
 1
 1a
 5
 5e
 6
 6f

sed 修改操作 (c,i,a)

這裏需要注意下,在 MacOS 這三個命令默認只想會報錯哦。

 # 先查看示例文件內容
 % cat d.txt
 1a
 2b
 3c
 4d
 5e
 6f
 
 % sed '/a/c change' d.txt
 change
 2b
 3c
 4d
 5e
 6f
 
 %  sed '/a/i change' d.txt
 change
 1a
 2b
 3c
 4d
 5e
 6f
 
 % sed '/a/a change' d.txt
 1a
 change
 2b
 3c
 4d
 5e
 6f
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/HC0GNofHXncI_zed2c-y4Q