shell 三劍客之 sed 命令詳解

 sed 編輯命令

sed 編輯命令對照表nginx

 

 

把 /etc/passwd 文件賦值到當前路徑下,進行操做bash

cp /etc/passwd ./
cat -n passwd

  

 

sed 刪除操做

刪除 passwd 文件的第一行3d

sed -i '1d' passwd 

 

刪除 1-3 行blog

sed -i '1,3d' passwd

 

刪除不能登陸的用戶,即 /sbin/nologin字符串

sed -i '/\/sbin\/nologin/d' passwd

 

刪除以mail開頭一直到以 ftp開頭的行string

sed -i '/^mail/,/^ftp/d' passwd

 

sed 增長操做  

在/bin/bash 行後面追加一句話 This is user which can login to systemclass

 sed -i '/\/bin\/bash/a This is user which can login to system' passwd

 

行前追加 在 root 和 nginx之間全部行以前追加 AAAAAAAAAAAAAAAAAAAA登錄

 sed -i '/^root/,/^nginx/i AAAAAAAAAAAAAAAAAAAA' passwd 

  

查找passwd文件中全部root的行,讀取 list 的內容追加到其後面變量

cat list

 

sed -i '/root/r list' passwd 

 

在passwd文件中將匹配到的 /bin/bash 行寫入到 /tmp/user_login.txt 文件中ftp

 sed '/\/bin\/bash/w /tmp/user_login.txt' passwd

  

sed 修改操做  

修改:

  • s/pattern/string/ 查找並替換,查找符合pattern模式的字符串,將其替換爲string 適配(1、2、3、4、五)
  • s/pattern/string/g g表示表示所有匹配
  • s/pattern/string/2g 2g表示:同一行內,只替換前兩個匹配到的,剩下的不替換
  • s/pattern/string/ig 加i參數表示匹配時忽略大小寫,g表示匹配到的所有替換

  

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

編輯命令用法總結

查詢:

  • p 打印

刪除:

  • d 刪

增長:

  • a 匹配到的行後追加內容
  • i 匹配到的行前追加內容
  • r 將後面指定文件的內容追加到匹配到的行後面
  • w 將匹配到的行內容另存到其餘文件中

修改:

  • s/pattern/string/ 查找並替換,查找符合pattern模式的字符串,將其替換爲string 適配(1、2、3、4、五)
  • s/pattern/string/g g表示表示所有匹配
  • s/pattern/string/2g 2g表示:同一行內,只替換前兩個匹配到的,剩下的不替換
  • s/pattern/string/ig 加i參數表示匹配時忽略大小寫,g表示匹配到的所有替換

其餘編輯命令:

  • = 顯示行號

 

什麼是反向引用

  • &和\1 引用模式匹配到的整個串

在file中搜尋以1開頭,而後跟兩個任意字符,以e結尾的字符串

sed "s/1..e/&r/g" file

  

和上面實現同樣的功能,使用\1表明搜尋到的字符串

sed "s/\(1..e\)/\1r/g" file

上面兩種方式實現了同樣的功能,分別使用&和\1引用前面匹配到的整個字符串 二者區別在於&只能表示匹配到的完整字符串,只能引用整個字符串:而\1可使用()對匹配到的字符串進行二次操做

例如:若是咱們僅想要替換匹配到的字符串的一部分,name必須使用\1這種方式,不能使用&

  

sed中引用變量時注意事項:

  • 一、匹配模式中存在變量,則建議使用雙引號
  • 二、sed中須要引入自定義變量時,若是外面使用單引號,則自定義變量也必須使用單引號
相關文章
相關標籤/搜索