<table cellspacing="0" cellpadding="0" style="word-wrap: break-word; empty-cells: show; border-collapse: collapse; table-layout: fixed; width: 756px; color: rgb(68, 68, 68); font-family: Tahoma, " microsoft="" yahei',="" simsun;="" font-size:="" 13px;="" line-height:="" 20px;="" background-color:="" rgb(255,="" 255,="" 255);="" "="">
sed緩衝區
sed 處理文件時,會把文件的每一行保存在一個臨時緩衝區,即模式空間.
sed處理完一行后,該模式空間就被清空,下一行等待處理.因此可把模式空間內容用命令h複製並
保存在一個暫存緩衝區(holding buffer)內,然後可用命令G把它從暫存緩衝區讀出一行,並放回模式空間緩衝區,
追加在模式空間內當前行的後面.
1. sed '/north/p' datafile
預設情況下,sed會把輸入的所有行都列印在標準輸出上;如果某行匹配了north,則sed將該行再列印一遍.
2. sed -n '/north/p' datafile
只列印匹配north的行.
sed 's/%//g' 把%換成空格
sed 's/^0*//g' 把以0開頭的數字換成空格
sed /^$/d 刪除空行
sed $d 刪除最后一行 |
sed ld 刪除第一行
sed 's/[0-9][0-9]*/& password/g' file.txt 把password連接到
3.刪除d
sed '3d' datafile 刪除第3行
sed '3,$d' datafile 刪除從第3行到結束
sed '$d' datafile 刪除最后一行
sed '/north/d' file 刪除匹配north的行
4.替換命令s
sed 's/west/north/g' datafile 全局替換
sed 's/[0-9][0-9]$/&.5/g' datafile
所有以兩位數字結尾的行,後面加上.5(點5)
sed -n 's/\(Mar\)got/\1lianne/p' datafile
Mar作為標籤1,將Margot 替換成Marianne
sed 's#3#88#g' datafile等價於 sed 's/3/88/g' datafile
指定行範圍:逗號
sed -n '/west/,/east/p' datafile 指定在模式west和east之間的行,列印
sed -n '5,/^northeast/p' datafile 列印從第5行到第一個以northeast開頭的行之間的所有行
sed '/west/,/east/s/$/**VACA**/' datafile修改從模式east和west之間的所有行,並將行尾$替換成**VACA**
多重編輯e
sed -e '1,3d' -e 's/Mike/Jones/' datafile
刪除1到3行,然後再替換Mike為Jones(先全部執行完第一重編輯,再進行第二重編輯)
讀入r
sed '/suan/r newfile' datafile
如果文件datafile中某一行匹配到模式suan,則在該行後讀入newfile的內容.
寫文件w
sed -n '/north/w newfile' datafile
如果文件datafile中某一行匹配到模式north,則把該行寫入newfile文件中
追加
sed '/^north /a\\
----->THE NORTH SALES<------
插入
sed '/eastern/i\\
NEW ENGLAND REGION\\
----------------' datafile
下一行命令n
sed '/eastern/{n;s/AM/Archie/;}' datafile
如果某一行匹配到模式eastern, 命令n指示sed用下一輸入行,即包含AM的那一行,
替換模式空間中的當前行,並用Archie替換AM,然後列印該行,再繼續向下處理
轉換y
sed '1,3y/abcdef/ABCDEF/' datafile
把第1到3行中abcedf字母轉換成大寫字母
退出q
sed '5q' datafile列印5行後退出
sed '/Lewis/{s/Lewid/Joseph/;q;} datafile
某行匹配到Lewis時,先用Joseph替換Lewis,然後立即退出
暫存和取用(h和g命令)
sed -e '/WE/{h;d;}' -e '/CT/{G;}' datafile
找到某一行匹配模式WE,用命令h將該行從模式緩衝區拷貝到一個暫存緩衝區,再用命令d把
該模式空間緩衝區那份拷貝刪除.找到模式CT后,再用G命令取出保存在暫存緩衝區中的副本,
用其替換模式空間當前行.
暫存和互換命令x
sed -e '/Patricia/h' -e '/Margot/x' datafile
x命令將暫存區的內容和模式空間內的當前行互換
sed腳本編程:把sed組成一個文本文件,執行腳本時,sed 先將輸入文件中第一行拷貝到模式緩衝區
,然後執行腳本中的所有命令;每行處理完畢后,sed再拷貝文件中下一行到模式緩衝區,
執行腳本中的所有命令.
如:
/Lewis/a\
Lewis is TOP salesperson for April!!!\
Lewis is moving to the southern district next month.\
/Margot/c\
********************
MARGOT HAS RETIRED\
********************
/i\
mployer database\
_________________
$d
%sed -f filename datafile
sed -n '/sentimeatal/p' filename
sed '1,3d' filename > newfile
sed '/[Dd]aniel/d' filename
sed -n '15,20p' filename
sed '/1,10s/Montana/MT/g' filename
sed '/March/!d' filename
sed '/March/\!d' filename
sed 's/\([Oo]cuur\)ence/\1rence' file
sed '/^....//' file刪除每行前4個字元
sed '/....$//' file刪除每行后4個字元
sed '/east/,/west/s/North/South/' filename
把從east到west範圍內出現的第一個North替換成South,只一次
本文出自 「柯小某」 博客,請務必保留此出處http://kexl908.blog.51cto.com/605006/857376