sed緩衝區
sed 處理文件時,會把文件的每一行保存在一個臨時緩衝區,即模式空間。
sed處理完一行後,該模式空間就被清空,下一行等待處理。因此可把模式空間內容用命令h複製並
保存在一個暫存緩衝區(holding buffer)內,然後可用命令G把它從暫存緩衝區讀出一行,並放回模式空間緩衝區,
追加在模式空間內當前行的後面。
1. sed '/north/p' datafile
缺省情況下,sed會把輸入的所有行都打印在標準輸出上;如果某行匹配了north,則sed將該行再打印一遍。
2. sed -n '/north/p' datafile
只打印匹配north的行.
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,只一次
sed 用法
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連接到
sed 用法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
阿里雲Ubuntu服務器搭建Javaweb開發環境
只修电脑不过夜
2018-08-27 20:03:20
Linux 系統下 CodeBlocks安裝與使用
花姑
2018-08-27 20:02:59
Linux後臺執行的方法 - 關閉、退出不影響
saife
2018-08-27 20:00:14
Can't read dir of '.' (errno: 13)
saife
2018-08-27 20:00:13
mysqldump: Got error: 1: Can't create/write to file '/data/export/test.txt' (Errcode: 13)
saife
2018-08-27 20:00:11
Ubuntu安裝inception錯誤處理make[2]: *** [sql/CMakeFiles/sql.dir/sql_yacc.cc.o] Error 1
saife
2018-08-27 20:00:11
linux bash腳本編程
li528405176
2018-08-27 19:57:05
linux 基礎命令(一):文件系統跳轉與操作系統探究——date,cal,df,free,exit,pwd,cd,ls,命令選項和參數,file,less,系統目錄,硬鏈接與軟鏈接
li528405176
2018-08-27 19:57:03
linux常用命令全拼
jlegend
2018-08-27 19:57:02
關於Lempel-Ziv壓縮算法的筆記
blueimpulse
2018-08-27 19:56:49
Linux下無線網卡安裝2
blueimpulse
2018-08-27 19:56:48
Linux之無線世界(在Linux平臺配置無線網卡)
blueimpulse
2018-08-27 19:56:48
《轉》QT_BEGIN_NAMESPACE、QT_END_NAMESPACE 等問題
wang_ji_min
2018-08-27 19:56:35
linux下 /etc/profile、~/.bash_profile ~/.profile的執行過程
wang_ji_min
2018-08-27 19:56:21
[轉]動態磁盤和LVM。好文章
hawstein
2018-08-27 19:56:18