sed 基本用法
最終列印:列印出模式空間中的經過處理後剩下的文字;
#man sed
sed [option] 'addresscommand' file...
-n:靜默模式,只顯示符合條件的行;
-i:直接修改原始檔;會修改到原檔案,注意;
-e script -e script:同時執行多個指令碼;
-f /path/to/scriptfile:執行這個檔案中的指令碼語句;
sef -f /path/to/scripts file;
address:位址行;command:命令
sed 'addresscommand ' file ...
1、startline,endline;比如:1,100;從第一行到100行;
2、/regexp/:使用正規表示式來指定模式;
/^root/:找出所有行中以root開頭的行;
3、/pattern1/,/pattern2/:表示第一次被模式一匹配到的行開始到第一次被pattern2匹配到的行結束,中間的所有行;
4、linenumber:精確的某一行,指定的行;
$:表示最後一行;
5、startline, +n;從startline開始,向後n行,總共n+1行;
command:命令
d:刪除符合條件的行;
eg:[root@iz233y80y23z ~]# sed "1,2d" /etc/fstab //刪除/etc/fstab檔案中的1,2行;
#刪除從第三行到最後一行
[root@iz233y80y23z ~]# sed '3,$d' /etc/fstab
#所有包含vdb的行都刪除
[root@iz233y80y23z ~]# sed '/vdb/d' /etc/fstab
p:顯示符合條件的行:sed顯示的模式空間中處理後的行;配合-n使用不然會有問題,會列印兩次符合條件的行;
eg:#顯示這種檔案中以斜線開頭的行
[root@iz233y80y23z ~]# sed '/^\//d' /etc/fstab
[root@iz233y80y23z ~]# sed -n '/^\//p' /etc/fstab
/dev/vdb /home ext3 defaults 0 0
/dev/vdb /data ext3 defaults 0 0
/dev/vdb /data ext3 defaults 0 0
a \"string":在指定的行後面追加新行,內容為string;\n:換行
eg:#在符合/開頭的行中後面追加新行
[root@iz233y80y23z ~]# sed -n '/^\//p' /etc/fstab | sed "a \#hello\nworld"
/dev/vdb /home ext3 defaults 0 0
#hello
world
/dev/vdb /data ext3 defaults 0 0
#hello
world
/dev/vdb /data ext3 defaults 0 0
#hello
world
i \string:在 符合條件的行前面新增新行,內容為string;
r file:將指定的檔案的內容新增到符合條件處;
eg:#將指定的檔案/etc/issue新增到/etc/fstab中的第二行,插入;檔案合併顯示;
[root@iz233y80y23z ~]# cat /etc/issue
\skernel \r on an \m
[root@iz233y80y23z ~]# sed "2r /etc/issue" /etc/fstab #\s
kernel \r on an \m
# /etc/fstab
# created by anaconda on fri nov 21 18:16:53 2014
## accessible filesystems, by reference, are maintained under '/dev/disk'
# see man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#uuid=6634633e-001d-43ba-8fab-202f1df93339 / ext4 defaults,barrier=0 1 1
/dev/vdb /home ext3 defaults 0 0
/dev/vdb /data ext3 defaults 0 0
/dev/vdb /data ext3 defaults 0 0
w file:將指定範圍內的內容另存到指定的檔案中;
eg:#將/etc/fstab中所有以/開頭的行插入到檔案data/test/fstab.txt中;
[root@iz233y80y23z ~]# sed '/^\//w /data/test/fstab.txt' /etc/fstab
s/pattern/string/:查詢並替換,預設每行中第一次被模式匹配的字串;switch;
s###,s@@@分隔符只要三個一樣就可以;
加上修飾符
g:全域性替換
i:忽略字元大小寫
eg:#把字串中的/轉化為#
[root@iz233y80y23z ~]# sed 's/\//#/g' /etc/fstab
## #etc#fstab
# created by anaconda on fri nov 21 18:16:53 2014
## accessible filesystems, by reference, are maintained under '#dev#disk'
# see man pages fstab(5), findfs(8), mount(8) and#or blkid(8) for more info
#uuid=6634633e-001d-43ba-8fab-202f1df93339 # ext4 defaults,barrier=0 1 1
#dev#vdb #home ext3 defaults 0 0
#dev#vdb #data ext3 defaults 0 0
#dev#vdb #data ext3 defaults 0 0
後向引用:\(\),\1,\2;
&:引用模式匹配的整個串;
eg:#將檔案中的sed.txt中的l..e模式匹配下改為l..er;\(\)後向引用\1
[root@iz233y80y23z ~]# sed 's#l..e#&r#g' sed.txt
hello, liker
hi, my lover
[root@iz233y80y23z ~]# sed 's#\(l..e\)#\1r#g' sed.txt
hello, liker
hi, my lover
#history替換行首中的空格去掉;並顯示第一行;
[root@iz233y80y23z ~]# history | sed 's#^[[:space:]]*##g' | cut -d' ' -f1
Linux sed命令學習
文章摘抄至 sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 silent 模式。在一般 sed 的用法...
Linux Sed 指令學習
sed stream editor 文字編輯器 你就把他想成是平常用的notepad 或者你熟悉的編輯器就ok 用法 sed 選項 命令 檔案選項 n 靜默模式,只顯示匹配處理的行 否則會輸出所有 i 真修改,不加 i的修改都是輸出修改 r 支援複雜正規表示式 f 指定命令檔案,比如命令很複雜,就直...
Linux Sed 命令的總結
sed是一種流編編器,它是文字處理中非常中的工具,能夠完美的配合正規表示式便用,功物能不同凡響。處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 oattern space 接看用sed命令處理緩衝區中的內容,處理成後,把緩衝區的內容送往螢幕顯示。接著理下一行,這樣不斷重複,直到檔案末。檔案...