国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

sed編輯器基礎(chǔ)命令

這篇具有很好參考價值的文章主要介紹了sed編輯器基礎(chǔ)命令。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


shell腳本編程系列


學(xué)習(xí)sed編輯器

sed編輯器被稱作流編輯器(stream editor),與普通的交互式文本編輯器不同,在交互式文本編輯器可以用鍵盤命令交互式插入、刪除或替換文本數(shù)據(jù)。流編輯器則是根據(jù)事先設(shè)計好的一組規(guī)則編輯數(shù)據(jù)流。

sed編輯器主要操作
  • 從輸入中讀取一行數(shù)據(jù)
  • 根據(jù)所提供的編輯器命令匹配數(shù)據(jù)
  • 按照命令修改數(shù)據(jù)流中的數(shù)據(jù)
  • 將新的數(shù)據(jù)輸出到STDOUT
  • 按順序逐行按照以上步驟處理數(shù)據(jù)

sed命令的格式為

sed options script file

options參數(shù)允許修改sed命令的行為,比如

  • -n不產(chǎn)生輸出,使用p(print)命令完成輸出
  • -f file在處理輸入時,將file中指定的命令添加到已有的命令中
  • -e commands則是在處理輸入時,加入額外的sed命令。

script參數(shù)指定了應(yīng)用于流數(shù)據(jù)中的單個命令,如果需要多個命令,則使用-e選項指定,也可以使用-f選項在單獨的文件中指定。

在命令行中定義編輯器命令
echo "This is a test" | sed 's/test/big test/'

使用s替換命令,替換命令會用斜線間指定的第二個字符串替換第一個字符串,本例中,big test替換了test
sed編輯器基礎(chǔ)命令

sed 's/dog/cat/' data1.txt

讀取文件,修改其中的內(nèi)容,然后發(fā)送到STDOUT
sed編輯器基礎(chǔ)命令

在命令行中使用多個編輯器命令
sed -e 's/brown/red/;s/dog/cat/' data1.txt

兩個命令都應(yīng)用于文件的每一行數(shù)據(jù)。命令之間必須以分號分隔,并且在命令末尾和分號之間不能出現(xiàn)空格
sed編輯器基礎(chǔ)命令

如果不想再多個命令之間使用分號,也可以使用次提示符來分隔命令。必須在閉合單引號所在行結(jié)束命令,bash shell一旦發(fā)現(xiàn)了閉合單引號,就會執(zhí)行命令

[root@192 Chapter19-Scripts]# sed -e '
> s/brown/green/
> s/fox/toad/
> s/dog/cat/' data1.txt

sed編輯器基礎(chǔ)命令

從文件中讀取編輯器命令
sed -f script1.sed data1.txt

腳本中的內(nèi)容為

s/brown/green/
s/fox/toad/
s/dog/cat/

在這種情況下,不用在每條命令后面加分號
sed編輯器基礎(chǔ)命令

sed編輯器基礎(chǔ)命令

更多的替換選項
替換標(biāo)志

在默認(rèn)情況下,替換命令s只替換每行中出現(xiàn)的第一處匹配文本,要想替換所有的匹配文本,則必須使用替換標(biāo)志(substitution flag)。替換標(biāo)志在替換命令字符串之后設(shè)置,其格式為

s/pattern/replacement/flags

有4種可用的替代標(biāo)志
數(shù)字:指明新文本將被替換行中的第幾處匹配

  • g:替換行中所有的匹配
  • p:指明打印出替換后的行
  • w file:將替換后的結(jié)果寫入文件
    替換每行中第二處匹配文本
sed 's/test/trial/2' data4.txt

sed編輯器基礎(chǔ)命令

替換文本行中所有的匹配文本

sed 's/test/trial/g' data4.txt

sed編輯器基礎(chǔ)命令

sed -n 's/test/trial/p' data5.txt

替換標(biāo)志p會打印出包含替換命令中指定匹配模式的文本行,通常會和-n選項配合使用,-n選項會抑制sed編輯器的輸出,而替換標(biāo)志p會輸出替換后的行。二者配合只會輸出被替換命令修改過的行

sed -n 's/test/trial/w test.txt' data5.txt

sed編輯器基礎(chǔ)命令

替換標(biāo)志w會將匹配的行輸出保存到指定文件中。sed編輯器的正常輸出會被保存在STDOUT中,只有那些包含匹配模式的行會被保存在指定的輸出文件中。
sed編輯器基礎(chǔ)命令

替換字符

字符串中有一些不太方便在替代模式中使用的字符,比如正斜線(/),因為正斜線被用作替換命令的分隔符,因此它在匹配模式和替換文本中同時出現(xiàn)時,必須使用反斜線來轉(zhuǎn)義。
比如

sed 's/\/bin\/bash/\/bin\/csh/' /etc/passwd

但是這樣很容易造成混亂和錯誤,因此sed編輯器允許選擇其他字符作為替換命令的替代分隔符

sed 's!/bin/bash!/bin/csh!' /etc/passwd

使用感嘆號作為替換命令的分隔符
sed編輯器基礎(chǔ)命令

使用地址

在默認(rèn)情況下,在sed編輯器中使用的命令會應(yīng)用于所有的文本行,如果只想將命令應(yīng)用于特定的某一行或某些行,則必須使用行尋址。
在sed命令中有兩種形式的行尋址:

  • 以數(shù)字形式表示的行區(qū)間
  • 匹配行內(nèi)文本的模式

以上兩種形式使用相同的格式來指定地址

[address] command

也可以將針對特定地址的多個命令分組:

address{
   command1
   command2
   command3
}

sed編輯器會將指定的各個命令應(yīng)用于匹配指定地址的文本行

  • 數(shù)字形式的行尋址

行地址既可以是單個行號

sed '2s/dog/cat/' data1.txt

也可以是用起始行號、逗號以及結(jié)尾行號指定的行區(qū)間

sed '2,3s/dog/cat/' data1.txt

美元符號作為結(jié)尾行號

sed '2,$s/dog/cat/' data1.txt

sed編輯器基礎(chǔ)命令

  • 使用文本模式過濾
/pattern/command

必須將指定的模式(pattern)放在正斜線內(nèi)
比如只想修改test用戶的默認(rèn)shell

sed '/test/s/bash/csh/' /etc/passwd

上面的案例使用固定的文本模式過濾特定的值,但有局限,sed編輯器也支持在文本模式中使用正則表達(dá)式來創(chuàng)建匹配效果更好的模式
sed編輯器基礎(chǔ)命令

  • 使用組的方式替換文本
[root@192 Chapter19-Scripts]# sed '2{
> s/fox/toad/
> s/dog/cat/
> }' data1.txt

sed編輯器基礎(chǔ)命令

刪除行

刪除命令(d)會刪除匹配指定模式的所有行。使用時需要小心,如果沒有指定尋址方式,則流中的所有文本都會被刪除。

 sed 'd' data1.txt
  • 通過行號指定要刪除的行
    sed編輯器基礎(chǔ)命令
  • 通過特定行區(qū)間指定
sed '2,3d' data6.txt

sed編輯器基礎(chǔ)命令

  • 通過特殊的末位字符$指定位置
sed '3,$d' data6.txt

sed編輯器基礎(chǔ)命令

sed編輯器的模式匹配特性也適用于刪除命令

sed '/number 1/d' data6.txt

sed編輯器基礎(chǔ)命令

也可以使用兩個文本模式來刪除匹配區(qū)間的行,但是要注意,第一個模式啟動行刪除功能,而第二個模式關(guān)閉行刪除功能,如果匹配了第一個模式之后,剩余文本中沒有匹配第二個模式的,則從匹配了第一個模式的行之后,都會被刪除
sed編輯器基礎(chǔ)命令

插入和附加文本
sed '[address]command new line'

插入(insert)(i)命令會在指定行前增加一行

echo 'Test Line 2' | sed 'i\Test line 1'

sed編輯器基礎(chǔ)命令

追加(append)(a)命令會在指定行后增加一行

echo 'Test Line 2' | sed 'a\Test line 1'

sed編輯器基礎(chǔ)命令
要向數(shù)據(jù)流內(nèi)部插入或附加數(shù)據(jù),必須用地址告訴sed編輯器希望數(shù)據(jù)出現(xiàn)在什么位置。使用行號或文本模式都行,但不能用行區(qū)間。

sed '3i\This is an inserted line.' data6.txt

會在文本的第3行之前插入數(shù)據(jù)

sed '3a\This is an inserted line.' data6.txt

會在文本的第3行之后插入數(shù)據(jù)

sed '$a\This is an inserted line.' data6.txt

直接附加到行尾
sed編輯器基礎(chǔ)命令

修改行

修改(c)命令允許修改數(shù)據(jù)流中整行文本的內(nèi)容,跟插入和追加命令的工作機(jī)制一樣,必須在sed命令中單獨指定一行
修改第二行的文本

sed '2c\This is a changed line of test.' data6.txt

sed編輯器基礎(chǔ)命令

文本模式會修改匹配的任意文本行

sed '/have 6 Infinity Stones/c\Snap!This is changed line of text.' data8.txt

sed編輯器基礎(chǔ)命令

使用地址區(qū)間需要小心,結(jié)果是將多行修改成了一行,而不是將匹配的多行都修改
sed編輯器基礎(chǔ)命令

轉(zhuǎn)換命令

轉(zhuǎn)換命令(y)是唯一可以處理單個字符的sed編輯器命令

[address]y/inchars/outchars

轉(zhuǎn)換命令會對inchars和outchars進(jìn)行一對一的映射。inchars中的第一個字符會被轉(zhuǎn)換成第一個字符,inchars中的第二個字符會被轉(zhuǎn)換為第二個字符,這個映射過程會一直持續(xù)到處理完指定字符。如果inchars和outchars的長度不同,則sed編輯器會產(chǎn)生一條錯誤消息。
轉(zhuǎn)換命令是一個全局命令,會對文本中所有匹配到的字符進(jìn)行轉(zhuǎn)換,不考慮字符出現(xiàn)的位置

echo "Test #1 of try #1." | sed 'y/123/678/'

sed編輯器基礎(chǔ)命令

再探打印
  • 打印命令(p)用于打印文本行
echo "This is a test" | sed 'p'

打印出所有的文本

sed -n '/3rd line/p' data6.txt

打印出包含匹配文本模式的行

sed -n '2,3p' data6.txt

打印出數(shù)據(jù)流中的部分行

sed -n '/3/{p;s/line/test/p}' data6.txt

在使用替換或修改命令做出改動之前查看相應(yīng)的行
sed編輯器基礎(chǔ)命令

  • 等號(=)命令用于打印行號
sed -n '/text/{=;p}' data7.txt

數(shù)據(jù)流中查找特定文本,然后打印行號和內(nèi)容
sed編輯器基礎(chǔ)命令

  • 列出(l)命令用于列出行

列出命令可以打印數(shù)據(jù)流中的文本和不可打印字符

sed -n 'l' data10.txt

sed編輯器基礎(chǔ)命令

使用sed處理文件
  • 寫入文件
    寫入(w)命令用來向文件寫入行,命令格式如下:
[address]w filename

filename可以使用相對路徑或絕對路徑,運(yùn)行sed編輯器的用戶必須具有文件的寫權(quán)限。地址可以是sed支持的任意類型的尋址方式,比如單個行號、文本模式、行區(qū)間或文本模式區(qū)間。

sed '1,2w test.txt' data6.txt

將數(shù)據(jù)流的前兩行寫入文本文件

sed -n '1,2w test.txt' data6.txt

不在STDOUT中顯示文本行,可以使用sed的-n選項

  • 將匹配文本模式的數(shù)據(jù)行寫入目標(biāo)文件
    sed -n '/Browncoat/w Browncoats.txt' data12.txt
    
    sed編輯器基礎(chǔ)命令
  • 從文件讀取數(shù)據(jù)
    可以通過i或者a向數(shù)據(jù)流中插入或追加內(nèi)容,而讀取(r)命令允許將一條獨立文件中的數(shù)據(jù)插入數(shù)據(jù)流,格式如下
[address]r filename

filename參數(shù)指定了數(shù)據(jù)文件的絕對路徑或相對路徑。讀取命令中無法使用地址區(qū)間,只能指定單個行號或文本模式地址。sed編輯器會將文件內(nèi)容插入指定地址之后。

sed '3r data13.txt' data6.txt

要在數(shù)據(jù)流的末尾添加文本,只需要使用美元符號地址即可

sed '$r data13.txt' data6.txt

sed編輯器基礎(chǔ)命令
使用文本模式地址將數(shù)據(jù)文件中的所有行插入數(shù)據(jù)流
sed編輯器基礎(chǔ)命令
讀取命令還有一個很酷的用法是和刪除命令配合使用,利用另一個文件中的數(shù)據(jù)來替換文件中的占位文本

[root@192 Chapter19-Scripts]# cat notice.std
Would the following people:
LIST
please report to the ship's captain.
[root@192 Chapter19-Scripts]# cat data12.txt
Blum, R       Browncoat
McGuiness, A  Alliance
Bresnahan, C  Browncoat
Harken, C     Alliance
[root@192 Chapter19-Scripts]# sed '/LIST/{
> r data12.txt
> d
> }' notice.std

sed編輯器基礎(chǔ)命令文章來源地址http://www.zghlxwxcb.cn/news/detail-430017.html

到了這里,關(guān)于sed編輯器基礎(chǔ)命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux Shell 腳本編程學(xué)習(xí)之【第2章 Linux文件系統(tǒng)和文本編輯器(第一部分)】

    1、root用戶 系統(tǒng)唯一,是真實的。該用戶既可以登錄系統(tǒng),可 以操作系統(tǒng)任何文件和命令,擁有最高權(quán)限。 2、虛擬用戶 這類用戶也被稱為偽用戶或假用戶,與真實用戶區(qū)分開來,這類用戶不 具有登錄系統(tǒng)的能力,但卻是系統(tǒng)運(yùn)行不可缺少的用戶,比如 bin、daemon、adm、 ft

    2024年02月16日
    瀏覽(26)
  • 【Linux】shell編程—awk編輯器

    【Linux】shell編程—awk編輯器

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 AWK是一種優(yōu)良的文本處理工具。它不僅是 Linux 中也是任何環(huán)境中現(xiàn)有的功能最強(qiáng)大的數(shù)據(jù)處理引擎之一。這種編程及數(shù)據(jù)操作語言的最大功能取決于一個人所擁有的知識 可以進(jìn)行樣式裝入、流控制、數(shù)

    2024年02月06日
    瀏覽(25)
  • 《Linux操作系統(tǒng)編程》第九章 數(shù)據(jù)查找和篩選工具 : 了解流編輯器sed和報表生成器awk的簡單使用

    《Linux操作系統(tǒng)編程》第九章 數(shù)據(jù)查找和篩選工具 : 了解流編輯器sed和報表生成器awk的簡單使用

    ???? 博主 libin9iOak帶您 Go to New World.??? ?? 個人主頁——libin9iOak的博客?? ?? 《面試題大全》 文章圖文并茂??生動形象??簡單易學(xué)!歡迎大家來踩踩~?? ?? 《IDEA開發(fā)秘籍》學(xué)會IDEA常用操作,工作效率翻倍~?? ???? 希望本文能夠給您帶來一定的幫助??文章粗淺,敬

    2024年02月12日
    瀏覽(32)
  • Sed編輯器

    Sed編輯器

    目錄 sed編輯器 命令格式: 常用選項: 常用操作: 打印內(nèi)容: 使用地址: ?編輯 替換:? 插入: sed是一種流編輯器,流編輯器會在編輯器處理數(shù)據(jù)之前基于預(yù)先提供的一組規(guī)則來編輯數(shù)據(jù)流。 sed編輯器可以根據(jù)命令來處理數(shù)據(jù)流中的數(shù)據(jù),這些命令要么從命令行中輸入,

    2024年02月05日
    瀏覽(15)
  • DAY 35 sed文本編輯器

    DAY 35 sed文本編輯器

    文本三劍客:都是按行讀取后處理。 grep 過濾行內(nèi)容 awk 過濾字段 sed 過濾行內(nèi)容;修改行內(nèi)容 sed是一種流編輯器,流編輯器會在編輯器處理數(shù)據(jù)之前基于預(yù)先提供的一組規(guī)則來編輯數(shù)據(jù)流 sed編輯器可以根據(jù)命令來處理數(shù)據(jù)流中的數(shù)據(jù),這些命令要么從命令行中輸入,要么存

    2023年04月19日
    瀏覽(23)
  • unity腳本基礎(chǔ)+編輯器UnityEditor學(xué)習(xí)

    unity腳本基礎(chǔ)+編輯器UnityEditor學(xué)習(xí)

    1.1創(chuàng)建腳本 新建腳本文件后,文件內(nèi)會有一段默認(rèn)代碼: 它源自基類MonoBehaviour,以確保此腳本將在游戲循環(huán)中運(yùn)行,并具有對某些事件作出反應(yīng)的附加功能。 1.2生命周期 當(dāng)腳本運(yùn)行時,unity會按照預(yù)定順序依次調(diào)用以下方法,完成生命周期: [所有腳本的順序是并行的] 初

    2024年02月04日
    瀏覽(18)
  • Linux文本之sed流編輯器

    Linux文本之sed流編輯器

    目錄 一、sed的相關(guān)知識及其工作流程 1)sed編輯器的介紹 2)sed 流編輯器的工作過程 3)怎么解決sed命令處理容量過大,或則內(nèi)容過多的而導(dǎo)致執(zhí)行效率慢的問題? 解決方案一(推薦用法): 解決方案二: 二、sed命令格式與選項操作符 1)sed命令格式 ?基本操作格式:? 2)

    2024年02月04日
    瀏覽(22)
  • 文本三劍客之sed編輯器

    文本三劍客之sed編輯器

    Sed是一個強(qiáng)大的文本處理工具,其名稱是Stream Editor(流編輯器)的縮寫。它被設(shè)計用于根據(jù)用戶定義的規(guī)則對文本進(jìn)行逐行處理和轉(zhuǎn)換。 Sed通過從輸入流中逐行讀取文本,并根據(jù)用戶指定的命令來對每一行進(jìn)行處理 sed的工作原理是 逐行讀取 輸入文本,并根據(jù)用戶 指定的命

    2024年02月12日
    瀏覽(20)
  • Linux文本處理工具sed(流編輯器)

    sed是一種流編輯器,它一次處理一行內(nèi)容。 處理時,把當(dāng)前處理的行存儲在臨時緩沖區(qū)(模式空間)中,接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送到屏幕。接著處理下一行,這樣不斷重復(fù)直到文件末尾。 文件內(nèi)容并沒有改變 ,除非你使用重定向存

    2024年02月12日
    瀏覽(22)
  • 《Linux操作系統(tǒng)編程》第四章 屏幕編程器vi : 了解屏幕編輯器vi的概述和基本操作命令

    《Linux操作系統(tǒng)編程》第四章 屏幕編程器vi : 了解屏幕編輯器vi的概述和基本操作命令

    ???? 博主 libin9iOak帶您 Go to New World.??? ?? 個人主頁——libin9iOak的博客?? ?? 《面試題大全》 文章圖文并茂??生動形象??簡單易學(xué)!歡迎大家來踩踩~?? ?? 《IDEA開發(fā)秘籍》學(xué)會IDEA常用操作,工作效率翻倍~?? ???? 希望本文能夠給您帶來一定的幫助??文章粗淺,敬

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包