sed命令介紹
Linux sed命令是利用腳本來處理文本文件,sed可以依照腳本的指令來處理、編輯文本文件,sed主要來自動編輯一個或者多個文件、簡化對文件的反覆操作、編寫轉換程序等。
sed命令
語法:sed [option] '{command}[flags]' [filename]
命令選項
-e script 將腳本中指定的命令添加到處理輸入時執行的命令中 多條件、一行中要有多個操作
-f script 將文件中指定的命令添加到處理出入時執行的命令中
-n 抑制自動輸出
-i 編輯文件內容
-i.bak 修改時同時創建.bak備份文件
-r 使用擴展的正則表達式
! 取反(跟在模式條件後與shell有所區別)
sed常用內部命令
a 在匹配後面添加
i 在匹配前面添加
p 打印
d 刪除
s 查找替換
c 更改
y 轉換 N D P
flags選擇
數字 顯示新文本替換的模式
g: 表示用新文本替換現有文本的全部實例
p: 表示打印原始的內容
w filename 將替換的結果寫入文件
例子展示,數據源
1> sed 's/dog/cat/' cat.txt 將每行的第一個dog替換成cat
2> sed 's/dog/cat/2' cat.txt 將每行的第二個dog替換成cat
3> sed 's/dog/cat/g' cat.txt 將每行的所有dog替換成cat
4> sed '3s/dog/cat/p' cat.txt 將第三行打印出來
5> sed '3s/dog/cat/w mfile' cat.txt 將第三行修改過的內容保存到mfile文件中
6> sed -n '3s/dog/cat/p' cat.txt 抑制內存的輸出,只打印出想要的
7> sed -e 's/brown/green/;s/dog/cat/' cat.txt 同時執行多條命令
注意:以上替換文本的時候,源文件中的文件並沒有發生實質性的替換
8> sed -i 's/dog/cat/g' cat.txt 加上-i命令選項,源文件中的文本才發生了真正的替換
9> sed -i.bak 's/dog/cat/g' cat.txt 將修改的文件備份到cat.txt.bak中,而cat.txt中沒有發生變化
10> sed -n '/^(root)(.*)(bash)$/p' /etc/passwd 將/etc/passwd文件中以root開頭以bash結尾的字符串打印出來
sed命令小技巧
$= 統計文本有多少行
1> sed -n '$=' cat.txt
2> sed '=' cat.txt 打印cat.txt內容的時候加上行號