linux sed 命令的用法


原文  http://blog.chinaunix.net/uid-24426415-id-77244.html

-------------------------------------------------------------------------------

初級入門

sed工具是一種非交互式的流編輯器。默認情況下只會影響輸出,不會改變輸入。sed處理文檔時是以行為單位的。功能有:刪除、查找替換、添加、插入、從其他文件讀取。

其實這些功能看起來都可以用vim等編輯器來實現。那么,為什么要有sed呢?

主要應用場景

  • 太過龐大的文本
  • 有規律的文本修改

sed的命令格式

 sed [option] command [file ...]
  • 1
  • 1

刪除

#刪除第一行 sed '1d' file
  • 1
  • 2
  • 1
  • 2

注意,這只影響到輸出流。如果想保存的話

sed -i '1d' filename
  • 1
  • 1

或者

#輸出到新文件 sed '1d'>newfilename
  • 1
  • 2
  • 1
  • 2

其中1d命令中,我們把1稱為地址,這里指代的是第一行。 
刪除第一行到最后一行

sed '1,$d' filename
  • 1
  • 1

刪除包含了某個pattern的行

sed '/pattern/d' filename #例如 sed '/^$/d' filename
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

查找替換

#普通替換 將每行的第一個line替換成LINE sed 's/line/LINE/' filename
  • 1
  • 2
  • 1
  • 2

sed ‘s/line/LINE/[number] 
表示對這一行來說至多替換number個line,如果number為g,則全部替換


字符轉換

現在還沒有見過重要的用法
  • 1
  • 1

插入文本

#在第二行前插入一行 sed '2 i insert_context' filename #在第二行之后插入一行 sed '2 a insert_context' filename #在匹配的行之前插入一行 sed '/pattern/i\new_word' filename
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

打印

#只打印出第一行 ,不加n的話會默認輸出每一行 sed -n '1p' filename #只打印出被修改的一行 sed -n 's/the/THE/p' filename


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM