sed命令
對文件的操作無非就是”增刪改查“,怎樣用sed命令實現對文件的”增刪改查“,玩轉sed是寫自動化腳本必須的基礎之一
sed遵循簡單的工作流:
- 讀取(從輸入中讀取某一行)
- 執行(在某一行上執行sed命令)
- 顯示(把結果顯示在輸出中)
默認是顯示修改后內容,不會修改原文件,除非使用-i 參數。
常用參數及命令
sed [-nefri] 'command' test.txt (盡量按照標准格式使用單引號)
sed |
|
處理文本文件,並輸出到標准輸出(控制台) |
|
command |
|
|
-e |
可以指定多個命令 |
|
a |
新增 |
|
-f |
指定命令文件 |
|
c |
替換 |
|
-n |
取消默認控制台輸出,與p一起使用可打印指定內容 |
|
d |
刪除 |
|
-i |
輸出到原文件,靜默執行(修改原文件的意思) |
|
i |
插入 |
|
|
|
|
p |
打印,要和-n參數一起使用 |
|
|
|
|
s |
替換(匹配局部替換) |
新增 a
sed '2a testContent' test.txt |
在第 2 行后面新增一行內容 |
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 |
溫馨提示
若不指定行號,則每一行都操作。
$代表最后一行,雙引號內的$代表使用變量。
已使用 Microsoft OneNote 2010 創建
一個用於存放所有筆記和信息的位置