Linux常用命令:sed,linux常用命令sed

來源:互聯網
上載者:User

Linux常用命令:sed,linux常用命令sed

本文記錄的是自己在學習《Linux私房菜》中Regex的筆記。 

關於行尾符$

如果檔案本身沒有內容,比如使用touch建立的檔案,那麼$將會沒有意義。例如下面操作:

先使用touch建立了一個test.txt檔案,然後嘗試使用sed命令去在行尾增加內容,但是沒有成功(緊接著的cat命令沒有輸出任何東西),然後我使用vim給test.txt手動增加了一行內容“add by vim”,然後再使用同樣的sed命令就成功了,如後續cat命令輸出結果。

命令sed

sed是一個十分有用的管道命令,功能很多,而且都是用的比較多的情境。

sed [-nefri] [動作]

  • -n:安靜模式。預設情況下,所有向sed的stdin都會顯示在螢幕上,而若使用安靜模式,則只有經過sed特殊處理的行或者命令顯示在螢幕上
  • -e:直接在命令列模式上進行sed的動作編輯
  • -f:直接將sed的動作寫在一個檔案內,-f filename則可以執行filename內的sed動作
  • -r:使sed支援擴張Regex文法,預設為基礎Regex文法
  • -i:直接修改讀取的檔案內容,而不是在螢幕上輸出。預設是在螢幕上輸出,而源檔案不受影響

下面是動作說明,動作需要使用單引號‘’,且可以用兩個數字或者$來選擇進行動作的行數,‘[n1[,n2]]function’,比如'2,5d','2d','3,$d'這三種形式,分別表示選擇[2-5]行,第2行,[3-最後一行]。也可以使用Regex來選擇行,比如'/Regex/d',則將對符號Regex的行進行刪除動作。function有如下操作:

  • a:新增。在a的後面必須接字串,且不能全是空格的字串,表示在當前行的下一行寫入這些資料
  • c:替換。c的後面必須接字串,這些字串將替換n1,n2之間的行,即刪除行[n1,n2],然後在n1-1後面寫入這些字串
  • d:刪除。刪除行[n1,n2]
  • i:插入。i的後面必須接字串,這些字串將出現當前行的上一行
  • p:列印。將選擇的資料列印出來,就是顯示在螢幕上。通常與-n一起
  • s:替換。直接進行替換工作,可以使用Regex,例如'1,20s/old/new/g'

關於對function的作用範圍,測試表明:

  • 若沒有選擇,即例如‘a str’,對於a,d,i,p則表示選擇所有的行。而對於c,則並不是刪除所有行,然後只增加一行str,而是把所有行都替換為str
  • 如果有選擇則,即例如‘1a str’,'1,3a str','2,$a str','$a str','/Regex/a str';對於a,d,i,p則表示選擇這些行進行動作。而對於c,若是使用[n1[,n2]]形式選擇的行,則刪除全部行,再增加一行str;而若是使用Regex選擇的行,則是把選擇的每一行都替換成str!

     

  • 若檔案為空白檔案,那麼這些功能都將無效果,包括增加類的命令a,i

使用a來增加多行:在每一行後面都必須使用反斜線“\”來進行新行的增加,例如:test.txt中本來只有一行:this is a test file.,然後使用a增加了三行

使用sed刪除空行:sed -i '/^$/d' filename,解釋:-i表示直接修改檔案而不在螢幕上顯示,/^$/使用的是Regex,在Regex中^表示行首,$表示行尾,行尾與行首之間沒有東西則是空行,d表示刪除。

sed命令有一個尋找替換功能:

sed 's/要被替換的字串/新的字串/g'    filename

其中,要“被替換的字串”是使用Regex的,而對於“新的字串”那肯定就是普通的字元。下面是我做的一些測試。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.