溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

shell三劍客之sed(一)

發(fā)布時間:2020-07-14 15:25:04 來源:網(wǎng)絡(luò) 閱讀:312 作者:chbo_yang 欄目:開發(fā)技術(shù)


  • 引言

  我們不生產(chǎn)水,我們只是大自然的搬運工。

  我不是在做廣告,我只是整理sed的時候突然想起了這句話。因為我接下來幾乎就是個搬運工了shell三劍客之sed(一)。沒辦法,前人總結(jié)的實在是太精辟了。思路清晰,一氣呵成。我瀏覽了下,就讓我有種感慨,sed也就這么點東西。說大話了,請忽略shell三劍客之sed(一)。

  總之一句話,這篇純手打,你也可以說是抄的,我承認,但是能把他變成自己的怎么都成!要站在別人的肩膀上,才能看的更遠。廢話不多說,上干貨。

  • 參考資料

  1. man sed 或者 sed --help

  2. 《unix shell 范例精解》

  3. http://www.gnu.org/software/sed/

  • sed,a stream editor

 上面是GRU官方文檔的標題:sed,一個流編輯器,非交互式的編輯器。

  • sed的工作過程

  文本文件--->sed的模式空間(緩存區(qū))--->顯示輸出

  sed逐行處理文件(或輸入),將當前處理的行放在sed模式空間里,在模式空間里處理完后顯示輸出,并刪除模式空間里的內(nèi)容。然后將下一行讀入模式空間,處理并輸出。

  我們發(fā)現(xiàn),sed處理的是讀入模式空間里的文件副本,不是原文件。所以使用sed編輯文件不會對原文件修改和破壞。

  • sed的工作模式

正則表達式sed -n '/RE/p' filename
定址地址可以是數(shù)字,正則表達式或者二者結(jié)合。
  • 正則表達式元字符


通用http://1076546426.blog.51cto.com/9959876/1702784
&保存查找串以便在替換串中引用



  • sed命令與選項

sed命令
命令
功能命令功能
a\在當前行之后追加文本

i\在當前行之前插入文本

rAppend text read from filename.(從文件中讀入并追加文本)

c\用新文本替換當前行中的文本
d刪除行

h/H

Copy/append pattern space to hold space.

將模式空間的內(nèi)容復制/追加到暫存緩沖區(qū)。



g/GCopy/append hold space to pattern space.

xExchange the contents of the hold and pattern spaces.
l列出非打印字符
n/NRead/append the next line of input into the pattern space.

pPrint the current pattern space.

s###g全局替換,#為間隔符

wWrite the current pattern space to filename.
y
y/source/dest/ 將字符串轉(zhuǎn)換為另一個字符








sed選項
選項
功能
-n
取消默認輸出
-e允許多項編輯
-f指定sed腳本文件
-i修改原文件
-ruse extended regular expressions in the script.
  • 實例


命令
功能
sed -n '/word/p' filename將filename中所有包含word的行打印的屏幕上
sed '1,3d' file1 >file2刪除file1中1到3行,并將修改結(jié)果保存到file2中
sed -n '1,5p' filename只打印1到5行
sed '1,10s#my#your#g' filename將1至10行中的所有的my替換為your
sed '/my/!d' filename刪除所有不含my的行
sed '/reports/s/5/8' filename將含有reports行的第一個數(shù)字5改為8
sed 's/....//' filename刪除每行的前4個字符
sed 's/....$//' filename刪除每行的后4個字符
sed -n '/word/w file2' flie1將file1中所有包含word的行寫入file2中



















向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI