中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

shell中sed怎么用

這篇文章給大家分享的是有關(guān)shell中sed怎么用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)主要從事網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、自適應(yīng)網(wǎng)站建設(shè)、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、重慶小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等多方位專業(yè)化運(yùn)作于一體。

1.首先先來了解一下什么是sed?

sed叫做流編輯器,在shell腳本和Makefile中作為過濾器使用非常普遍,也就是把前一個(gè)程序的輸出引入sed的輸入,經(jīng)過一系列編輯命令轉(zhuǎn)換成為另一種格式輸出。下面我們通過一張?jiān)韴D來了解一下它的工作模式:

編輯命令的格式為,sed /pattern/action

shell中sed怎么用

經(jīng)過sed處理后文件內(nèi)容并沒有改變,除?使用重定向存儲(chǔ)輸出。sed主要用來自動(dòng)編輯一個(gè)或多個(gè)文件;簡化對(duì)文件的反復(fù)操作;sed默認(rèn)按照Basic  規(guī)范基本匹配!也就是說類似于( ) { } | 等特殊字符需轉(zhuǎn)義,否則就不識(shí)別,或者是用擴(kuò)展模式也可以。

2. 下面重點(diǎn)介紹一下有關(guān)sed的參數(shù)及action的操作方法

(1)-n參數(shù),p命令的action

shell中sed怎么用

(2) d命令的action

shell中sed怎么用

shell中sed怎么用

(3)/pattern/s/pattern1/pattern2/:查找符合pattern的行,將該行***個(gè)匹配pattern1的字符串替換為pattern2

/pattern/s/pattern1/pattern2/g:查找符合pattern的行,將該行所有匹配pattern1的字符串替換為pattern2

shell中sed怎么用

shell中sed怎么用

這個(gè)操作不知道大家會(huì)不會(huì)聯(lián)想到vim編輯器中的底行模式搜索,它們是類似的。

下面總結(jié)一下sed中參數(shù)的選擇及執(zhí)行操作:

[plain] view plain copy

<strong>參數(shù)選擇:

-n:一般sed命令會(huì)把所有數(shù)據(jù)都輸出到屏幕,如果加入-n選項(xiàng)的話,則只會(huì)把經(jīng)過sed命令處理的行輸出到屏幕。

-e:允許對(duì)輸入數(shù)據(jù)應(yīng)用多條sed命令編輯。

-i:將修改結(jié)果直接寫入到讀取數(shù)據(jù)的文件,而不是由屏幕輸出。(1.修改了文件; 2.由cat可查看)

-f: 指定sed腳本的文件名。

action:

a:追加,在當(dāng)前行后添加一行或多行。

c:行替換,用c后面的字符串替換原數(shù)據(jù)行。

i:插入,在當(dāng)前行前插入一行或多行。

p:打印,輸出指定的行。

s:字符串替換,用一個(gè)字符串替換另外一個(gè)字符串。格式為”行范圍s/舊字符串/新字符串/g”(如果不加g的話,則表示只替換每行***個(gè)匹配的串)。

</strong>

以上沒有練習(xí)到的,有興趣的可以去嘗試嘗試!

3.再來介紹一下sed中的定址

定址用于決定對(duì)文件中哪些行進(jìn)行行編輯,地址的形式可以是數(shù)字、正則表達(dá)式、或二者的結(jié)合。如果沒有指定地址,sed將處理輸入文件的所有行。下面舉一些例子:

shell中sed怎么用  

shell中sed怎么用

sed '/start/ ,/end/d' file #刪除包含&rsquo;start&rsquo;行和&rsquo;end&rsquo;行之間的行

sed '/start/, 10d' file #刪除包含&rsquo;start&rsquo; 的行到第十行的內(nèi)容

4.模式空間和保持空間

(1)保持空間:用來存儲(chǔ)數(shù)據(jù),相當(dāng)于一個(gè)倉庫,它不能對(duì)數(shù)據(jù)進(jìn)行處理 ;

(2)模式空間:專門以行為單位對(duì)數(shù)據(jù)進(jìn)行處理。

一般情況下,如果不顯示的使用一些選項(xiàng)的話,是不會(huì)用到保持空間的。

[plain] view plain copy

<span style="color:#000000;"><strong>命令:

g:將保持空間的內(nèi)容拷貝到模式空間中,會(huì)將模式空間原來的值覆蓋掉。

G:將保持空間的內(nèi)容追加到模式空間中。

h:將模式空間的值拷貝到保持空間,會(huì)將保持空間原來的值覆蓋掉。

H:將模式空間的值追加到保持空間中。

d:刪除模式空間的所有行,并讀下一行到模式空間。

D:刪除模式空間的***行,不讀下一行到模式空間。

n:輸出模式空間的行,讀取下一行替換當(dāng)前模式空間的行,接著執(zhí)行下一條處理命令而不是***條命令。

N:讀入下一行,追加到模式空間行后面,此時(shí)模式空間中有兩行。

x:交換模式空間和保持空間的內(nèi)容。

</strong></span>

例1:給每行后面添加一行空行

shell中sed怎么用

例2:用sed模擬倒序(tac)打印的過程

shell中sed怎么用

例3.追加匹配行到文件末尾

shell中sed怎么用

例4:將一列內(nèi)容變?yōu)橐恍?/p>

shell中sed怎么用

例5:求出1-100的求和

shell中sed怎么用

例6:打印輸出奇數(shù)行和偶數(shù)行

shell中sed怎么用

5.使用標(biāo)簽

[plain] view plain copy

:a表示標(biāo)簽a;

ba表示跳轉(zhuǎn)到a標(biāo)簽;

$表示***一行;

!表示不做后續(xù)操作

所以,$!ba表示***一行不用跳轉(zhuǎn)到a標(biāo)簽,結(jié)束此次操作。

下面舉一個(gè)例子:

shell中sed怎么用

***補(bǔ)充一點(diǎn):

[plain] view plain copy

與grep一樣,sed也支持特殊元字符來進(jìn)行模式查找、替換。不同的是,sed使用的正則表達(dá)式是括在斜杠線"/"之間的模式。

如果要把正則表達(dá)式分隔符"/"改為另一個(gè)字符,比如o,只要在這個(gè)字符前加一個(gè)反斜線,在字符后跟上正則表達(dá)式,再跟上這個(gè)字符即可。例如:sed -n  '\o^56op' datafile

^:行首定位符 /^my/ 匹配所有以my開頭的行;

$:行尾定位符 /my$/ 匹配所有以my結(jié)尾的行;

.:匹配除換行符以外的單個(gè)字符 /m..y/ 匹配包含字母m,后跟兩個(gè)任意字符,再跟字母y的行;

*:匹配零個(gè)或多個(gè)前導(dǎo)字符 /test*/ 匹配包含字符串 tes,后跟零個(gè)或多個(gè) t 字母的行;

[]:匹配指定字符組內(nèi)的任一字符 /t[eE]st/ 匹配包含test 或 tEst 的行;

[^]:匹配不在指定字符組內(nèi)的任一字符 /t[^eE]st/ 匹配string 以t開頭,但st之前的那個(gè)字符不是e或E的行;

&:保存查找串以便在替換串中引用 s/test/*&*/g 符號(hào)&代表查找串。test將被替換為*test*

\<:詞?首定位符 /\<my/ 匹配包含以my開頭的單詞的行;

\>:詞尾定位符 /my\>/ 匹配包含以my結(jié)尾的單詞的行;

x\{m\}:連續(xù)m個(gè)x 如:/9\{5\}/ 匹配包含連續(xù)5個(gè)9的行;

x\{m,\}:至少m個(gè)x 如:/9\{5,\}/ 匹配包含至少連續(xù)5個(gè)9的行;

x\{m,n\}:至少m個(gè),但不超過n個(gè)x 如:/9\{5,7\}/ 匹配包含連續(xù)5到7個(gè)9的行。 還有一個(gè)單元匹配--替換的問題:

shell中sed怎么用

感謝各位的閱讀!關(guān)于“shell中sed怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)站標(biāo)題:shell中sed怎么用
轉(zhuǎn)載來源:http://m.rwnh.cn/article34/jcjcpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、外貿(mào)建站、微信小程序、網(wǎng)站收錄網(wǎng)站改版、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
东至县| 长治县| 德令哈市| 鄂托克前旗| 西贡区| 沾化县| 杭锦旗| 广水市| 咸阳市| 西充县| 东光县| 定州市| 汽车| 定结县| 米脂县| 江西省| 巴彦县| 靖边县| 客服| 浮梁县| 崇文区| 信丰县| 汤原县| 鹰潭市| 仲巴县| 洛浦县| 莱州市| 阜康市| 博兴县| 文登市| 吉林省| 屯昌县| 双柏县| 常熟市| 成安县| 柳州市| 龙口市| 兴山县| 仁寿县| 临洮县| 洛扎县|