SED

http://baike.baidu.com/link?url=XDE2dldcobCBNv9IHKlYg2-9WGClLsoFlGX_8anEZeSDJ97vkpX1Zr_WTBBmhym0-rGyaE4WaxGjV7-YNxZvPBwWkXNXxufB5scYzaVgu97#2

SED

 

(Linux指令)

  編輯
本詞條缺乏名片圖,補充相關內容使詞條更完整,還能快速升級,趕忙來 編輯吧!
SED是一項Linux指令,功能同awk相似,差異在於,sed簡單,對列處理的功能要差一些,awk的功能複雜,對列處理的功能比較強大。
中文名
SED
options
'command' file(s)
D
刪除模板塊的第一行
c    \
用新的文本改變本行的文本。

目錄

sed命令

編輯
sed全稱是:Stream EDitor
調用sed命令有兩種形式:
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
a\在當前行後面加入一行文本。
b lable分支到腳本中帶有標記的地方,若是分支不存在則分支到腳本的末尾。
c\用新的文本改變本行的文本。
d從模板塊(Pattern space)位置刪除行。
D刪除模板塊的第一行。
i\在當前行上面插入文本。
h拷貝模板塊的內容到內存中的緩衝區。
H追加模板塊的內容到內存中的緩衝區
g得到內存緩衝區的內容,並替代當前模板塊中的文本。
G得到內存緩衝區的內容,並追加到當前模板塊文本的後面。
l列表不能打印 字符的清單。
n讀取下一個輸入行,用下一個命令處理新的行而不是用第一個命令。
N追加下一個輸入行到模板塊後面並在兩者間嵌入一個新行,改變當前行號碼。
p打印模板塊的行。
P(大寫)打印模板塊的第一行。
q退出Sed。
r file從file中讀行。
t labelif分支,從最後一行開始,條件一旦知足或者T,t命令,將致使分支到帶有標號的命令處,或者到腳本的末尾。
T label錯誤分支,從最後一行開始,一旦發生錯誤或者T,t命令,將致使分支到帶有標號的命令處,或者到腳本的末尾。
w file寫並追加模板塊到file末尾。
W file寫並追加模板塊的第一行到file末尾。
!表示後面的命令對全部沒有被選定的行發生做用。
s/re/string用string替換 正則表達式re。
=打印當前行號碼。
#把註釋擴展到下一個換行符之前。
如下的是替換標記g表示行內全面替換。
p表示打印行。
w表示把行寫入一個文件。
x表示互換模板塊中的文本和緩衝區中的文本。
y表示把一個 字符翻譯爲另外的字符(可是不用於正則表達式)

選項

編輯
-e command,--expression=command容許多臺編輯。
-h,--help打印幫助,並顯示bug列表的地址。
-n,--quiet,--silent取消默認輸出。
-f,--filer=script-file引導sed 腳本文件名。
-V,--version打印版本和版權信息。

元字符集

編輯
^錨定行的開始如:/^sed/匹配全部以sed開頭的行。
$錨定行的結束 如:/sed$/匹配全部以sed結尾的行。
.匹配一個非換行符的字符 如:/s.d/匹配s後接一個任意字符,而後是d。
*匹配零或多個字符 如:/*sed/匹配全部模板是一個或多個空格後緊跟sed的行。
[]匹配一個指定範圍內的字符,如/[Ss]ed/匹配sed和Sed。
[^]匹配一個不在指定範圍內的 字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。
\(..\)保存匹配的字符,如s/\(love\)able/\1rs,loveable被替換成lovers。
&;保存搜索字符用來替換其餘字符,如s/love/**&**/,love這成**love**。
\<;錨定單詞的開始,如:/\<love/匹配包含以love開頭的單詞的行。
\>;錨定單詞的結束,如/love\>/匹配包含以love結尾的單詞的行。
x\{m\}重複字符x,m次,如:/0\{5\}/匹配包含5個o的行。
x\{m,\}重複字符x,至少m次,如:/o\{5,\}/匹配至少有5個o的行。
x\{m,n\}重複字符x,至少m次,很少於n次,如:/o\{5,10\}/匹配5--10個o的行。

實例

編輯
刪除:d命令$ sed '2d' example-----刪除example文件的第二行。
$ sed '2,$d' example-----刪除example文件的第二行到末尾全部行。
$ sed '$d' example-----刪除example文件的最後一行。
$ sed '/test/'d example-----刪除example文件全部包含test的行。
替換:s命令$ sed 's/test/mytest/g' example-----在整行範圍內把test替換爲mytest。若是沒有g標記,則只有每行第一個匹配的test被替換成mytest。
$ sed -n 's/^test/mytest/p' example-----(-n)選項和p標誌一塊兒使用表示只打印那些發生替換的行。也就是說,若是某一行開頭的test被替換成mytest,就打印它。
$ sed 's/^192.168.0.1/&localhost/' example-----&;符號表示替換換字符串中被找到的部份。全部以192.168.0.1開頭的行都會被替換成它自已加localhost,變成192.168.0.1localhost。
$ sed -n 's/\(love\)able/\1rs/p' example-----love被標記爲1,全部loveable會被替換成lovers,並且替換的行會被打印出來。
$ sed 's#10#100#g' example-----不論什麼字符,緊跟着s命令的都被認爲是新的 分隔符,因此,「#」在這裏是分隔符,代替了默認的「/」分隔符。表示把全部10替換成100。
選定行的範圍:逗號$ sed -n '/test/,/check/p' example-----全部在模板test和check所肯定的範圍內的行都被打印。
$ sed -n '5,/^test/p' example-----打印從第五行開始到第一個包含以test開始的行之間的全部行。
$ sed '/test/,/check/s/$/sed test/' example-----對於模板test和west之間的行,每行的末尾用字符串sed test替換。
多點編輯:e命令$ sed -e '1,5d' -e 's/test/check/' example-----(-e)選項容許在同一行裏執行多條命令。如例子所示,第一條命令刪除1至5行,第二條命令用check替換test。命令的執行順序對結果有影響。若是兩個命令都是替換命令,那麼第一個替換命令將影響第二個替換命令的結果。
$ sed --expression='s/test/check/' --expression='/love/d' example-----一個比-e更好的命令是--expression。它能給sed 表達式賦值。
從文件讀入:r命令$ sed '/test/r file' example-----file裏的內容被讀進來,顯示在與test匹配的行後面,若是匹配多行,則file的內容將顯示在全部匹配行的下面。
寫入文件:w命令$ sed -n '/test/w file' example-----在example中全部包含test的行都被寫入file裏。
追加命令:a命令$ sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test開頭的行後面,sed要求命令a後面有一個反斜槓。
插入:i命令$ sed '/test/i\\
new line
-------------------------' example
若是test被匹配,則把 反斜槓後面的文本插入到匹配行的前面。
下一個:n命令$ sed '/test/{ n; s/aa/bb/; }' example-----若是test被匹配,則移動到匹配行的下一行,替換這一行的aa,變爲bb,並打印該行,而後繼續。
變形:y命令$ sed '1,10y/abcde/ABCDE/' example-----把1--10行內全部abcde轉變爲大寫,注意, 正則表達式 元字符不能使用這個命令。
退出:q命令$ sed '10q' example-----打印完第10行後,退出sed。
保持和獲取:h命令和G命令$ sed -e '/test/h' -e '$G' example-----在sed處理文件的時候,每一行都被保存在一個叫模式空間的臨時緩衝區中,除非行被刪除或者輸出被取消,不然全部被處理的行都將打印在屏幕上。接着模式空間被清空,並存入新的一行等待處理。在這個例子裏,匹配test的行被找到後,將存入模式空間,h命令將其複製並存入一個稱爲保持緩存區的特殊緩衝區內。第二條語句的意思是,當到達最後一行後,G命令取出保持緩衝區的行,而後把它放回模式空間中,且追加到現 在已經存在於模式空間中的行的末尾。在這個例子中就是追加到最後一行。簡單來講,任何包含test的行都被複制並追加到該文件的末尾。
保持和互換:h命令和x命令$ sed -e '/test/h' -e '/check/x' example -----互換模式空間和保持緩衝區的內容。也就是把包含test與check的行互換。

Unix命令行程序和內建指令(更多)

文件系統
 cat  cd  chmod  chown
 chgrp  cksum  cmp  cp
 du  df  fsck  fuser
 ln  ls  lsattr  lsof
 mkdir  mount  mv  pwd
 rm  rmdir  split  touch
 umask      
 
程序
 at  bg  chroot  cron
 exit  fg  jobs  kill
 killall  nice  pgrep  pidof
 pkill  ps  pstree  sleep
 time  top  wait  
 
使用環境
 env  finger  id  logname
 mesg  passwd  su  sudo
 uptime  w  wall  who
 whoami  write    
 
文字編輯
 awk  comm  cut  ed
 ex  fmt  head  iconv
 join  less  more  paste
 sed  sort  strings  talk
 tac  tail  tr  uniq
 vi  wc  xargs  
 
Shell 程序
 alias  basename  dirname  echo
 expr  false  printf  test
 true  unset    
 
網絡
 inetd  netstat  ping  rlogin
 netcat  traceroute    
 
搜索
 find  grep  locate  whereis
 which      
 
雜項
 apropos  banner  bc  cal
 clear  date  dd  file
 help  info  size  lp
 man  history  tee  tput
 type  yes  uname  whatis
 
詞條標籤:
計算機學
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息