歡迎您光臨本站 註冊首頁

Shell

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0
<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


[火星人 ] Shell已經有395次圍觀

http://coctec.com/docs/linux/show-post-45869.html