免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
SED工具使用總結(jié)--clayboy的博客
一. 簡介不同于一般的交互式編輯器( Vi等), SED (Stream Editor)是一個(gè)逐行讀入數(shù)據(jù),進(jìn)行處理后再輸出到標(biāo)準(zhǔn)輸出的非交互式編輯器.
優(yōu)點(diǎn)是: 流編輯, 方便地從管道(Pipe line)讀入文字, 進(jìn)行文字自動編輯處理.
用途包括:
1). 對文檔進(jìn)行批量編輯工作: 可以利用SED命令對文件進(jìn)行刪除,插入,
修改等編輯. 由于是自動完成的,所以可以對一批文件重復(fù)操作,提高效率.
2). 對程序中間過程進(jìn)行編輯處理: 借助管道, 自動處理中間結(jié)果.
注意: SED只對輸入處理,并在標(biāo)準(zhǔn)輸出上輸出,不改變原有文件內(nèi)容,如果想報(bào)存結(jié)果要用重定向命令.
SED工作基本原理:
當(dāng) sed 由標(biāo)準(zhǔn)輸入讀入一行資料并放入 pattern space 時(shí) , sed 依照 sed script 的編輯指令逐一對 pattern space 內(nèi)的資料執(zhí)行編輯 , 之後 , 再由 pattern space 內(nèi)的結(jié)果送到標(biāo)準(zhǔn)輸出 , 接著再將下一行資料讀入。如此重執(zhí)行上述動作 , 直至讀完所有資料行為止. 另外,SED還有一hold space可以作為暫時(shí)的文本保存區(qū),跟pattern space進(jìn)行交互.
二. 基本使用
1. SED命令的格式:
sed [-n] [-e ‘script’] [-f script_file] file
-n : no printing, 不輸出, 除非遇到對該行的指定輸出命令(/p).
如無該參數(shù), 默認(rèn)逐行輸出處理結(jié)果到STDOUT.
-e : 后跟sed編輯指令
-f : 后跟script file, 將sed script從一個(gè)文件中取得
file : 待處理的文件, 被逐行讀出, 處理, 輸出到STDOUT, 本身不變. 可以用重定向的方式輸出為文件.
2. SED script編輯指令的格式:
[address [,address]] command [argument]
address: 行數(shù), 可以有0,1,2個(gè)地址參數(shù), 表明命令作用于全部行,
某一行, 或者是某幾連續(xù)行. 也可以是正則表達(dá)式
command: 命令, 表明進(jìn)行的操作
argument: 該命令對應(yīng)的參數(shù), 只有替換命令(s)可以帶參數(shù)
3. SED command 種類:
1). 處理整行的command:
Command
功能
地址參數(shù)
可能個(gè)數(shù)
說明
d
刪除一行
0,1,2
將匹配的該行文字刪除, 不輸出
n
讀入下一行
0,1,2
將匹配行文字輸出,從輸入讀入下一行文字, 繼續(xù)執(zhí)行下一個(gè)指令
a\
加入文字
0,1
將文字加入到匹配行文字后輸出
i\
插入文字
0,1
將文字插入到匹配行文字前輸出
c\
替換文字
0,1,2
將文字替換匹配行文字進(jìn)行輸出
2). 替換或轉(zhuǎn)換命令(Substitute, transform):
Command
功能
說明
s
模式替換
找到匹配行, 進(jìn)行替換操作
y
子元轉(zhuǎn)換
找到匹配行, 進(jìn)行子元轉(zhuǎn)換
s命令: sed中唯一的帶參數(shù)的命令, 可以有4種參數(shù):
g參數(shù), 在該行中, 替換所以匹配而不是只替換第一次匹配
n 參數(shù), 在該行中, 替換第n個(gè)匹配
p參數(shù), 對該行執(zhí)行替換, 并輸出該行文字
w filename 參數(shù), 將替換后的該行寫入filename文件中
如, /UNIX/s/OK/YES/g, 含UNIX的行, 所有OK->YES
該命令內(nèi)嵌入vi編輯器中.
y命令: 該行中所有對應(yīng)子元進(jìn)行轉(zhuǎn)換.
如, 1,5y/abc/edf/, 所以1到5行所有子元: a->e, b->d, c->f 轉(zhuǎn)換
3). 輸入輸出命令:
Command
功能
地址參數(shù)
可能個(gè)數(shù)
說明
p
送至輸出
0,1,2
遇匹配行時(shí), 輸出pattern space 內(nèi)容
l
送至輸出
0,1,2
與p類似,不同的是將鍵盤上無法輸出的字符用8進(jìn)制輸出,超過72個(gè)字長的部分移到下一行
w filename
寫入文件
0,1,2
將匹配行文字寫入文件filename中
r filename
從文件讀入
0,1,2
對匹配行,用filename中的文字輸出
*SED將內(nèi)部分為pattern space(工作區(qū))和hold space(暫存區(qū))
4). 多行處理命令:
通常sed一次處理一行文字, 這些命令賦予多行處理能力
Command
功能
地址參數(shù)
可能個(gè)數(shù)
說明
N
Next line
0,1,2
與匹配行時(shí),再讀入下一行,加在當(dāng)前pattern space文字的后面
D
Delete first part of pattern space
NO address
將pattern space第一個(gè)new line字母前的文字刪去,僅一個(gè)newline字母時(shí),相當(dāng)于d 命令
P
Print first part
of pattern space
NO address
將pattern space第一個(gè)new line字母前的文字輸出
5). 存取暫存區(qū)的命令:
pattern space與hold space文字的交互
Command
功能
地址參數(shù)
可能個(gè)數(shù)
說明
h
pattern space拷貝到hold space
0,1,2
將pattern space內(nèi)容拷貝到hold space
H
pattern space 加到hold space
0,1,2
將pattern space內(nèi)容加到hold space后
g
h反方向
0,1,2
將hold space內(nèi)容拷貝到pattern space
G
H反方向
0,1,2
將hold space內(nèi)容加到pattern space后
x
交互兩個(gè)space
將pattern space與hold space內(nèi)容交換
6). 執(zhí)行流程控制命令:
Command
功能
地址參數(shù)
可能個(gè)數(shù)
說明
!
Dont
0,1,2
對匹配行以外的內(nèi)容執(zhí)行命令
{}
Group command
沒有
對匹配行執(zhí)行多個(gè)命令,這些命令用{}包含
:label
0,1,2
定義給命令用的label
b label
0,1,2
遇匹配時(shí),跳到label,繼續(xù)執(zhí)行下命令
t label
遇匹配時(shí),先執(zhí)行一替換命令,成功則同b, 否則繼續(xù)執(zhí)行一命令
7). 其他命令:
Command
功能
地址參數(shù)
可能個(gè)數(shù)
說明
=
Line number
1
將匹配行的行數(shù)輸出
q
Quit
1
遇到匹配時(shí),結(jié)束sed
三. 常用操作舉例
1. 將文件中所以小寫變大寫:
y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
2. 將包含"ERROR"的行, 替換為"This line has error"
sed -f script.sed file1 > file2
script.sed 內(nèi)容:
/ERROR/c\
This line has error
3. 部分行的輸出與刪除
注意: SED本身不改變原文件內(nèi)容, 刪除僅指不輸出該部分,重定向輸出為文件時(shí),與原文件比為刪除
sed -n '2,5p' file1 : 僅輸出文件file1的2-5行
sed -e '2,5d' file1 : 將文件file1的2-5行刪除
sed -e '/^#/d' file1 : 將文件file1的以#開頭的行刪除
sed -ne '/HELLO/p' file1 : 僅輸出file1中含HELLO的行
sed -ne '/BEGIN/,/END/p' file1 : 僅輸出file1中BEGIN與END間的部分
首先,匹配含BEGIN的行作為塊首, 然后向后以第一次匹配的含END的行為塊尾,輸出該塊各行
如果, 沒有匹配到BEGIN,則不輸出; 如果只匹配到BEGIN,則輸出從該行到文件尾的各行
在匹配到BEGIN的行后面,匹配到END的前面含有的BEGIN當(dāng)作一般行,仍以第一個(gè)BEGIN為塊首
一個(gè)文件中, 可能有好幾個(gè)這樣匹配的區(qū)域塊,都要輸出
4. 替換操作
sed -e 's/foo/bar/' file1 : 將file1中第一次出現(xiàn)的foo替換為bar
sed -e 's/foo/bar/g' file1 : 將file1中所有的foo替換為bar
sed -e '1,8s/foo/bar/g' file1 : 將file1的1-8行中所以的foo替換為bar
sed -e '/^$/,/^END/s/foo/bar/g' file1
首先匹配以空行為塊首,END為行首的行為塊尾的所有區(qū)域塊,
然后將在這些區(qū)域塊中出現(xiàn)的foo替換為bar
sed -e 's/<.*>//g' file1 : 將file1各行中,<>間的文字刪除(最大)
is what meant ===> meant
sed -e 's/<[^>]*.//g' file1 : 將file1各行中,<>間的文字刪除(最小)
is what meant ===> is what meant
注意: .*表示任意格式的任意字符 [^>]*表示任意個(gè)數(shù)的非>的字符
sed -e 's/girl/nice & hello/g' file1 : 將file1各行中的girl替換為nice girl hello
這里&表示前面匹配的內(nèi)容,在要替換的文字里引用
更強(qiáng)的引用: 在匹配文字中用\(\)包含文字,在匹配文字中用\1到\9來引用
sed -e 's/\(boy\) loves \(girl\)/\2 A loves \1 B/g' file1
boy loves girl ===> girl A loves boy B'
5.對同一對象執(zhí)行多個(gè)sed操作時(shí)的3種方法
1). sed -e 'command1;command2;command3' file1
三個(gè)sed命令依次作用到file1的各行
2). sed -e 'command1' -e 'command2 file1
跟1)類似,比1)跟保險(xiǎn),1)不能用的時(shí)候可以嘗試
3). sed -f script_file file1
一些復(fù)雜命令,必須寫到一個(gè)script 文件中
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linux最方便的4個(gè)命令(生信方向)
【記憶卡片】Linux sed命令
sed
Vim之刪除偶數(shù)行,附sed和gawk解法
sed 和 awk 正則表達(dá)式
sed?基礎(chǔ),語句格式
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服