Linux命令之sed命令

在寫一些bash小腳本的時候,常用的命令有sed和awk等,寫一篇記錄文章如下:

命令簡介:

Sed命令是利用腳本來處理文本文件。sed可依照腳本的指令來處理,編輯文本文件,sed主要用來自動編輯一個或多個文件、簡化對文件的反覆操作、編寫轉換程序等。而對文件的操作無非就是“增刪改查”,如何使用好sed命令是寫自動化腳本的必須基礎之一

sed遵循的簡單的工作流:

1.讀取(從輸出中讀取某一行)

2.執行(在某一行執行sed命令)

3.顯示(把結果顯示在輸出中)
默認是顯示修改後的內容,不會修改原文件,除非使用 -i 參數

常用參數及命令

sed [-efni] 'command' test.txt (儘量按照標準格式使用單引號)

 

以下爲列出部分命令和動作:

sed

 

處理文本文件,並輸出到標準輸出(控制檯)

 

command

 

 

-e

可以指定多個命令

 

a

新增

 

-f

指定命令文件

 

c

替換

 

-n

取消默認控制檯輸出,與p一起使用可打印指定內容

 

d

刪除

 

-i

輸出到原文件,靜默執行(修改原文件的意思)

 

i

插入

 

 

 

 

p

打印,要和-n參數一起使用

 

 

 

 

s

替換(匹配局部替換)

動作:

新增 a

sed '1a testContent' test.txt

在第1行後面新增一行內容,不指定數字,爲每一行的後面都新增一行指定內容

sed '1,3a testContent' test.txt

在原文的第 1~3 行後面各新增一行內容

替換 c

sed '2c testContent' test.txt

將第 2 行內容整行替換,不指定數字,則將每一行都替換成指定內容(效果同正則符號.相同)

sed '1,3c testContent' test.txt

將第 1~3 行內容替換成一行指定內容

刪除 d

sed '2d' test.txt

刪除第 2 行,不指定數字,則將每一行都刪除

sed '1,3d' test.txt

刪除第1~3行

插入 i

sed '2i testContent' test.txt

在第 2 行前面插入一行內容,不指定數字,爲每一行的前面都新增一行指定內容

sed '1,3i testContent' test.txt

在原文的第 1~3 行前面各插入一行內容

打印 p

sed '2p' test.txt

重複打印第 2 行,不指定數字,則將每一行都重複打印一遍

sed '1,3p' test.txt

重複打印第1~3行

sed -n '2p' test.txt

只打印第 2 行

sed -n '1,3p' test.txt

只打印第 1~3 行

sed -n '/user/p' test.txt

打印匹配到user的行,類似grep

sed -n '/user/!p' test.txt

! 反選,打印沒有匹配到user的行

sed -n 's/old/new/gp' test

只打印匹配替換的行

替換 s

sed 's/old/new/' test.txt

匹配每一行的第一個old替換爲new

sed 's/old/new/gi' test.txt

匹配所有old替換爲new,g 代表一行多個,i 代表匹配忽略大小寫

sed '3,9s/old/new/gi' test.txt

匹配第 3~9 行所有old替換爲new

參數 -e

sed -e 's/系統/00/g' -e '2d' test.txt

執行多個指令

參數 -f

sed -f ab.log test.txt

多個命令寫進ab.log文件裏,一行一條命令,效果同-e

 

部分正則表達式:

^     在每一行的開頭添加指定數據   sed 's/^/hello/g'

$     在每一行的結尾添加指定數據   sed 's/$/over/g'

\      轉義特殊字符     sed 's/\*/\%/g'

# 當/符號和需要替換的字符衝突時可以使用 sed 's#/#hello#g'

. 匹配任意一個字符,除了換行符,但需要注意的是,在sed中不能匹配換行符,但是在awk中可以匹配換行符。類似於shell通配符中“?”,匹配任意一個字符

*  表示前邊的字符有0個或多個,*表示一個字符有0個或多個,也就是能匹配任意字符,類似shell通配符中的“*”,可以匹配任意字符

以下爲優秀的詳細介紹該命令的文章:

sed -i命令詳解及入門攻略

sed命令

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章