sed命令簡介,sed命令

來源:互聯網
上載者:User

sed命令簡介,sed命令

sed

  是一種流編輯器,一次處理一行內容,處理時,把當前處理的行儲存在臨時緩衝區,稱為模式空間,接著用sed命令處理模式空間中的內容,處理完成後,把緩衝區的內容送往螢幕。然後讀入下行,執行下一個迴圈。

 

  用法:sed [option]... 'script' inputfile...

# :指定某行,否則全文
/pattern/:被此處模式所能夠匹配到的每一行
#,#:指定範圍
#,+#:指定#行至#+N行
/pat1/,/pat2/
#,/pat1/

常用選項:
  -n :不輸出模式空間內容到螢幕
  -e :多點編輯
  -f:/PATH/指令檔 :從指定檔案中讀取編輯指令碼
  -i.bak :備份原檔案並編輯
  -r :支援擴充Regex

d:刪除
  sed '/^$/d' :刪除空白行
  sed '1,10d' :刪除1-10行(多行參數之間可用-e多點編輯)

p:顯示模式空間中的內容
  sed -n '1~2p' file :僅顯示奇數行
  sed -n '2~2p' file :僅顯示偶數行

a [\]test :在指定行後追加文本,支援使用\n實現多行追加
  sed '/root/a\superman' /etc/passwd :在包含root的行後一行追加superman

i [\]text :在行前插入文本
  sed '/root/i\superman' /etc/passwd :在包含root的行前一行追加superman

c [\]text :替換行為單行或多行文本
  sed '/root/c\superman' /etc/passwd :把包含root的行整行內容都替換為superman

w /path/file : 儲存模式比對的行至指定檔案

r /path/file :讀取指定檔案的文本至模式空間中匹配到的行後

= :為模式空間中的行列印行號
sed -n -e '/^$/p' -e '/^$/=' file :顯示空白行並列印空白行行號

! :取反

s/// s@@@ s### :尋找替換
g :行內全域替換
p :顯示替換成功的行
w /PATH/file :將替換成功的行儲存至檔案中

進階編輯命令
h:把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容追加至保持空間中
g:從保持空間取出資料覆蓋至模式空間
G:從保持空間取出內容追加至模式空間
x:把模式空間中的內容與保持空間中的內容進行互換
n:讀取匹配到的行的下一行覆蓋至模式空間
N:讀取匹配到的行的下一行追加至模式空間
d:刪除模式空間中的行
D:刪除多行模式空間中的所有行

樣本:

1、刪除centos7系統/etc/grub2.cfg檔案中所有以空白開頭的行行首的空白字元
sed /^[[:blank:]]/d' /etc/grub2.cfg

 

2、刪除/etc/fstab檔案中所有以#開頭,後面至少跟一個空白字元的行的行首的#和空白字元
sed '/^#[[:blank:]]\+/d' /etc/fstab

 

3、在centos6系統/root/install.log每一行行首增加#號
sed -n 's/^/#&/p' /root/install.log

 

4、在/etc/fstab檔案中不以#開頭的行的行首增加#號
sed 's/^[^#]/#&/' /etc/fstab

 

5、處理/etc/fstab路徑,使用sed命令取出其目錄名和基名
目錄名:echo /etc/fstab |sed 's@[^/]\+$@@'

基名:echo /etc/fstab |sed s'@.*/@@'

 

6、利用sed 取出ifconfig命令中原生IPv4地址
ifconfig |sed -n '/inet addr/p' |sed 's/^[[:blank:]]*inet addr://' |cut -d' ' -f1

ifconfig |sed -n '2p' |tr -s ' ' : |cut -d: -f4

 

7、統計centos安裝光碟片中Package目錄下的所有rpm檔案的以.分隔倒數第二個欄位的重複次數

mount /dev/cdrom /mnt |ls /mnt/Packages/ |sed s'/.rpm//' |sed s'@.*[/.]@@' |sort |uniq -c

 

8、統計/etc/init.d/functions檔案中每個單詞的出現次數,並排序

sed s'/[^[:alpha:]]/\n/g' /etc/init.d/functions |sort |uniq -c |sed '1d'


9、將文字檔的n和n+1行合并為一行,n為奇數行
sed 'N;s/\n//'

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.