sed:過濾和轉換的文本編輯器,主要是針對行的編輯,一次只能一行
用法:sed 【option】 {script} filename
參數:
-n:取消默認輸出
-e:用於多重編輯
-i:用於改變替換的內容
-f :直接將 sed 的動作寫在一個文件內, -f filename 則可以運行 filename 內的 sed 動作
-r :sed 的動作支持的是延伸型正規表示法的語法。(默認是基礎正規表示法語法)
s:是替換
g:是全部替換
p:打印輸出
d:是刪除指定,剩餘輸出
例子:使用seq或者echo輸出一個1-30的文件
# seq 1 30 >sed.txt
# echo {1..30}|tr " " "\n">sed.txt
刪除:
# sed '1d' sed.txt 刪除第一行
# sed '$d' sed.txt 刪除最後一行
# sed '1,5d' sed.txt 刪除第一到第五行
顯示:
# sed -n '1p' sed.txt 顯示第一行
# sed -n '$p' sed.txt 顯示最後一行
# sed -n '1,5p' sed.txt 顯示第一到第五行
顯示查找行:
# sed -n '/^2/p' sed.txt 以2開頭的行
# sed -n '/2$/p' sed.txt 以2結尾的行
# sed -n '/2/p' sed.txt 包含2的行
替換:
# sed -i 's/2/1/g' sed.txt 將所有的2替換成1
# sed -i '10s/10/11/g' sed.txt 指定第10行替換
**使用sed取出網卡的IP地址
# ifconfig eth0|sed -n 2p|sed 's/^.*dr://g'|sed 's/Bc.*$//g' 這裏是先取前部分,再取後部分
# ifconfig eth0|sed -n 2p|sed -n 's#^.*dr:\(.*\)Bca.*$#\1#gp' 這裏的括號必須轉義
**使用find+sed替換所有的文件:
# find . -type f exec sed -i 's/2/1/g' {} \;
# find . -type f | xargs sed -i 's/2/1/g' ;