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

Shell編程基礎(chǔ)(十五)文本三劍客(sed)

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

使用場景

sed提供了一種免交互的方式修改文件內(nèi)容。
它是一行一行處理,可以通過正則匹配要修改的部分

基本語法

  • 基本語法
    sed [-opt] command files(多個文件 空格隔開)

  • sed 使用擴(kuò)展正則,不加r不能完全匹配擴(kuò)展正則表達(dá)式
    sed -r “正則匹配數(shù)據(jù)行/指定行號 sed命令” files

  • sed 修改內(nèi)容寫回文件
    默認(rèn),sed操作完的數(shù)據(jù)會顯示在控制臺,而不會回寫到文件中; 若要將變更保存到文件可以使用 -i 選項(xiàng)

    sed -r -i “/正則表達(dá)式/或者指定行號 + [{]sed命令[}]” files
    sed 命令可以使用 {} 括起來,也可以不寫,寫了意思更明確。

如果要對選中的行執(zhí)行多個操作可以使用 分號(;) 隔開 sed命令

sed -r "\regex expression\{s;r}" file
  • 行號表示法匹配多行使用逗號分割兩個行號($ 表示最后一行
# 刪除 1 到 2 行
sed -r "1,2n5n3t3z" file 
  • sed 命令中引用變量

通常在 單引號’ ’ 內(nèi)使用sed 命令,但單引號 ’ ’ 會將內(nèi)部字符強(qiáng)制轉(zhuǎn)義,使其無法引用到變量。
此時需使用 雙引號 " " 定義sed命令,但此時有可能引發(fā)其他字符需轉(zhuǎn)義,這時需使用反斜杠 \ 單獨(dú)對字符進(jìn)行轉(zhuǎn)義。

# 將最后一行替換為 變量abc的值 123
var abc=123
sed -r "\$ c $123" file

實(shí)例

命令列表

  • d 刪除匹配的行
    // 刪除正則匹配的行
    sed -r “/正則表達(dá)式/n5n3t3z” file
    // 刪除指定行
    sed -r “行號n5n3t3z” file

    • 按正則表達(dá)式刪除
    sed -r "/regex expression/d" file
    
    • 刪除第二行
    sed -r "2 n5n3t3z" file
    sed -r "2d" file
    sed -r "2n5n3t3z" file
    
    • 刪除 2-5行
    sed "2,5 n5n3t3z" file
    sed "2,5n5n3t3z" file
    
    • 刪除5行到最后一行
    sed -r "5,$ n5n3t3z" file
    sed -r "5,$n5n3t3z" file
    sed -r "5,$d" file
    
    • 刪除最后一行
    sed -r "$ n5n3t3z" file
    sed -r "$n5n3t3z" file
    sed -r "$d" file
    
  • s 替換匹配上的字符
    sed -r “s/正則查找的內(nèi)容/要替換的內(nèi)容/” file
    也可以使用 # 分割,當(dāng)要替換的內(nèi)容中有/或其他特殊含義字符時可以使用#,或者使用轉(zhuǎn)義
    sed -r “s#正則查找的內(nèi)容#要替換的內(nèi)容#” file

    默認(rèn),只會替換每一行中的第一個匹配上的字符串;如果要全部替換,需要在最后的 / 后加個g,代表行內(nèi)匹配上的字符串都替換

    # 將含有 abc 的行 的第一個 abc 換成 def
    sed -r "s/abc/def/" file
    
    # 將含有 abc的行 的所有 abc 都換成 def
    sed -r "s/abc/def/g" file
    

    sed 的 s 命令中,如果要引用查找到的字符串可以使用() + \1 或 &(&獲取的是整個查找條件而忽視() ) 獲取
    和 vim 中 類似。

    # 匹配abcd ,然后在然后取出abc,再在后面拼接123,最終結(jié)果是 abcd 換成 abc123
    # ;\1 代表前面第一個()內(nèi)的內(nèi)容,依次遞增;&取的值是 整個條件命中字符串,而僅僅不是()中的內(nèi)容
    sed -r 's/(abc)d/\1123/' file
    結(jié)果就是  abc123
    

    s 命令如果要按照行號進(jìn)行匹配,則需要將行號放到 s前面,一般使用行號,是針對整行進(jìn)行操作,要么替換整行 要么 在前后追加

    # 行首插入 123,有以下三種寫法
    sed -r '1 s/^/123/' file  # ^ 代表行首字符,將^ 替換為123
    sed -r '1 s/(.*)/123\1/' file
    sed -r '1 s/.*/123&/' file
    
    # 行尾插入 123,有以下三種寫法
    sed -r '1 s/$/123/' file # $ 代表行首字符,將$ 替換為123
    sed -r '1 s/(.*)/\1123/' file
    sed -r '1 s/.*/&123/' file
    
    # 整行替換 為 123 等同于 c 命令
    sed -r '1 s/(.*)/123/' file
    sed -r '1 s/.*/123/' file
    
  • r 讀取文件,寫入到sed指定的文件
    讀取一個文件的內(nèi)容,默認(rèn)會追加到 sed指定的文件中的每一行下面。
    如果要追加在目標(biāo)文件的指定行的下面,
    可以在 r前面加上行號,同樣,這里可以使用$表示最后一行
    還可以使用正則匹配行,在匹配上的每一行下面都會追加讀取到的內(nèi)容,注意正則表達(dá)式使用 / / 分割

# 取sourcefile的內(nèi)容, 追加到 destfile每一行后面
sed -r 'r sourcefile' destfile

# 讀取sourcefile的內(nèi)容, 追加到 destfile最后一行后面
sed -r '$r sourcefile' destfile

# 讀取sourcefile的內(nèi)容, 追加到 destfile第一行后面
sed -r '1r sourcefile' destfile

# 讀取sourcefile的內(nèi)容, 追加到 正則表達(dá)式匹配上的每一行后面
sed -r '/正則表達(dá)式/r sourcefile' destfile
  • w 寫入文件,讀取sed指定文件的內(nèi)容寫入另一個文件
    將 sed指定的文件 sourcefile,另存為另一個文件 destfile
    同樣可以使用 行號或者 正則,選中想要保存的部分行,這樣就是匹配上的行保存到目標(biāo)文件中。
# 將 整個sourcefile文件內(nèi)容寫入 destfile
sed -r 'w destfile' sourcefile

# 將sourcefile文件 指定行寫入 destfile
sed -r '1w destfile' sourcefile

# 將sourcefile文件 指定范圍行寫入 destfile
sed -r '1,5w destfile' sourcefile

# 將sourcefile文件 正則匹配上的行 寫入 destfile
sed -r '/正則表達(dá)式/w destfile' sourcefile
  • a 追加內(nèi)容,在匹配行下面寫入數(shù)據(jù)
    和上面一樣,可以使用固定行號,范圍行號以及正則表達(dá)式匹配要追加的行,不限制時,應(yīng)用到每一行。
    追加多行可以使用 \n 轉(zhuǎn)義實(shí)現(xiàn)
# 給file文件每一行下面添加一行 123 
sed -r 'a 123' file

每一行下面追加兩行123
sed -r 'a 123\n123' file
  • i 插入內(nèi)容,在匹配行上面寫入數(shù)據(jù)
    規(guī)則與上面 a 類似,只是內(nèi)容寫到匹配行的上面

  • c 替換匹配上的整行內(nèi)容
    規(guī)則與上面a 類似,對匹配上的行,整行替換

# 第一行替換為 123
sed -r '1c 123' file

# 第一行到第二行替換為 123
sed -r '1,2c 123' file

# 匹配上正則的行 替換為 123
sed -r '/正則表達(dá)式/c 123' file
  • n 匹配當(dāng)前行,組合其他sed命令作用到下一行
    需與其他命令結(jié)合使用,n命令僅僅用于查找,組合的其他命令才是作用到下一行的命令
# 刪除第二行
sed -r '1n;d' file
  • ! 反選;對匹配的結(jié)果取反(!放在查詢條件之后,與常規(guī)的取反操作放在最前面不同),然后應(yīng)用后面的sed命令
# 刪掉 除了第一行的其他行
sed -r '1! d' file

# 刪掉 正則 不 匹配的行
sed -r '/正則表達(dá)式/! d' file
  • e 多次編輯,
    正常sed 只能應(yīng)用一次編輯
    類似
sed -r '1 d' file

如果想一個命令執(zhí)行多個獨(dú)立的編輯操作,可以使用-e

# 刪除第一行 & 第二行的aa換成bb
sed -r -e '1 d'  -e '2 s/aa/bb/' file

當(dāng)然,也可以使用分號(;)隔離多個獨(dú)立的 查找應(yīng)用 命令

# 刪除第一行 & 第二行的aa換成bb
sed -r  '1 d;2 s/aa/bb/' file

如果是對同一行執(zhí)行多個操作可以使用分號(;)隔離多個sed 應(yīng)用命令文章來源地址http://www.zghlxwxcb.cn/news/detail-635076.html

# 第二行的 aa換成bb & 第二行的 cc換成dd
sed -r  '2 {s/aa/bb/;s/cc/dd/}' file

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

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

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

相關(guān)文章

  • linux文本三劍客---grep,sed,awk

    linux文本三劍客---grep,sed,awk

    目錄 grep 什么是grep? grep實(shí)例演示 命令參數(shù): 案例演示: sed 概念: ?常用選項(xiàng): 案例演示: awk 概念: awk常用命令選項(xiàng): awk變量: 內(nèi)置變量 自定義變量 awk的簡單案例 在“a b c d”的d后面插入三個字符 統(tǒng)計tcp連接狀態(tài)數(shù)量 ?統(tǒng)計日志中狀態(tài)碼非200的IP的次數(shù) 什么是grep?

    2024年02月13日
    瀏覽(90)
  • Linux文本三劍客(grep、sed、awk)

    Linux文本三劍客(grep、sed、awk)

    目錄 grep 1、什么是grep和rgrep? 2、使用grep 2.1、命令格式 2.2、命令功能 2.3、命令參數(shù) 3、實(shí)戰(zhàn)演示 sed 1、認(rèn)識sed 2、使用sed 2.1、命令格式 2.2、常用選項(xiàng)options 2.3、地址定界 2.4、編輯命令command 3、sed用法演示 3.1、常用選項(xiàng)用法演示 3.2、sed地址定界演示 3.3、編輯命令command演示

    2024年02月03日
    瀏覽(95)
  • Linux 文本處理三劍客:grep、sed 和 awk

    awk、grep、sed是linux操作文本的三大利器,合稱文本三劍客,也是必須掌握的linux命令之一。三者的功能都是處理文本,但側(cè)重點(diǎn)各不相同,其中屬awk功能最強(qiáng)大,但也最復(fù)雜。grep更適合單純的查找或匹配文本,sed更適合編輯匹配到的文本,awk更適合格式化文本,對文本進(jìn)行較

    2024年01月17日
    瀏覽(95)
  • Linux:管道命令與文本處理三劍客(grep、sed、awk)

    Linux:管道命令與文本處理三劍客(grep、sed、awk)

    眾所周知,bash命令執(zhí)行的時候會輸出信息,但有時這些信息必須要經(jīng)過幾次處理之后才能得到我們想要的格式,此時應(yīng)該如何處置?這就牽涉到 管道命令(pipe) 了。管道命令使用的是 | 這個界定符號。另外,管道命令與連續(xù)執(zhí)行命令是不一樣的,這點(diǎn)下面我們會說明。 我們先

    2023年04月18日
    瀏覽(34)
  • Shell腳本攻略:文本三劍客之grep

    Shell腳本攻略:文本三劍客之grep

    目錄 一、理論 1.grep 2.sort 3.uniq 4.tr 5.cut 6.split 7.paste 二、實(shí)驗(yàn) 1. grep ?編輯 ?編輯 2.sort 3.uniq ?編輯 4.tr 5.cut 6.split 7.統(tǒng)計當(dāng)前主機(jī)的連接狀態(tài) 8.統(tǒng)計當(dāng)前連接主機(jī)數(shù) 9.獲取信息 (1)概念 grep是Linux中最常用的”文本處理工具”之一,grep與sed、awk合稱為Linux中的三劍客。 grep的

    2024年02月07日
    瀏覽(85)
  • Shell腳本攻略:文本三劍客之a(chǎn)wk

    Shell腳本攻略:文本三劍客之a(chǎn)wk

    目錄 一、理論 1.awk原理 2.awk打印 ?3.awk條件判斷 4.awk數(shù)組與循環(huán) 5.awk函數(shù) 6.常用命令 二、實(shí)驗(yàn) 1.統(tǒng)計磁盤可用容量 2.統(tǒng)計/etc下文件總大小 3.CPU使用率 4.統(tǒng)計內(nèi)存 5.監(jiān)控硬盤 (1)概念 awk由 Aho,Weinberger 和 Kernighan 創(chuàng)建的文本模式掃描和處理語言。 awk非常復(fù)雜,所以這不是一

    2024年02月08日
    瀏覽(83)
  • Liunx shell編程及自動化運(yùn)維實(shí)現(xiàn)--第五章三劍客

    Liunx shell編程及自動化運(yùn)維實(shí)現(xiàn)--第五章三劍客

    正則表達(dá)式(RE)是一種字符模式,用于再查找過程中匹配指定的字符,在大多數(shù)程序中,正則表達(dá)式都被置于兩個正斜杠之間:例如//就是由正斜杠界定的正則表達(dá)式,他將匹配被查找的行中任何位置出現(xiàn)的相同模式。在正則表達(dá)式中,元字符時最重要的概念。 定義:元字

    2024年02月21日
    瀏覽(22)
  • linux命令三劍客grep、sed、awk

    準(zhǔn)備 grep、sed、awk號稱\\\"linux三劍客\\\",使用頻繁,功能強(qiáng)大,本文通過一個實(shí)例演示下基本用法。首先準(zhǔn)備一個文本文件,命名為text.txt,寫入文件內(nèi)容: grep 首先,最簡單的是grep。經(jīng)常用來過濾查看日志。對于grep需要知道如下幾個常用的命令選項(xiàng): -n: 額外輸出行號。例如過

    2024年02月05日
    瀏覽(96)
  • Linux中字符處理三劍客(grep sed awk )

    在 Linux 系統(tǒng)中,字符處理流程可以利用三個常用的工具來完成,三劍客的具體說明如下: grep:grep 是一種強(qiáng)大的文本搜索工具,可以搜索文件內(nèi)容中包含指定文本的行,并打印出包含該文本的行。grep 命令通常用于搜索日志文件、配置文件等。 在Linux中,\\\"grep\\\"是一種文本搜索

    2024年02月08日
    瀏覽(114)
  • Linux三劍客grep、sed、awk(包括練習(xí)題)

    Linux grep (global regular expression) 命令用于查找文件里符合條件的字符串或正則表達(dá)式。 基本用法與常見的正則表達(dá)式 擴(kuò)展正則表達(dá)式實(shí)踐 此處使用grep -E 進(jìn)行實(shí)踐擴(kuò)展正則,egrep官網(wǎng)已經(jīng)棄用 注意:sed和awk使用單引號,雙引號有特殊解釋 sed是Stream Editor(字符流編輯器)的縮寫

    2024年02月11日
    瀏覽(89)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包