欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux下Shell編程之sed命令的用法詳解

 更新時(shí)間:2025年01月03日 10:51:34   作者:jackiendsc  
sed(stream?editor)是一種流編輯器,它能夠?qū)ξ谋具M(jìn)行過濾和轉(zhuǎn)換,sed?非常適合于在管道中處理文本數(shù)據(jù),下面小編來和大家聊聊它的具體用法吧

sed(stream editor)是一種流編輯器,它能夠?qū)ξ谋具M(jìn)行過濾和轉(zhuǎn)換。sed 的工作原理是按照指定的模式對輸入的文本行進(jìn)行匹配,然后對匹配到的行執(zhí)行相應(yīng)的編輯命令。sed 非常適合于在管道中處理文本數(shù)據(jù),并且可以用于自動(dòng)化腳本中的文本處理任務(wù)。

一、基本用法

sed [選項(xiàng)] '腳本' 文件名

腳本:是一個(gè)或多個(gè) sed 編輯命令的集合,用單引號(hào)括起來。

文件名:是要處理的文本文件。如果省略文件名,sed 將從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)。

常用選項(xiàng)

-e 腳本:直接在命令行中指定 sed 腳本。

-f 腳本文件:從指定的文件中讀取 sed 腳本。

-i[SUFFIX]:直接修改文件內(nèi)容,而不是輸出到標(biāo)準(zhǔn)輸出。如果指定了 SUFFIX,則備份原文件,并在其后添加該后綴。

-n:取消默認(rèn)輸出,只輸出 sed 腳本處理過的行。

編輯命令

a\ 文本:在匹配行之后插入新文本。

i\ 文本:在匹配行之前插入新文本。

c\ 文本:用新文本替換匹配行。

d:刪除匹配行。

p:打印匹配行。

s/原模式/新模式/[修飾符]:用新模式替換原模式。修飾符可以是 g(全局替換),p(打印替換結(jié)果),i(忽略大小寫)等。

模式空間與保持空間

模式空間‌:sed 處理文本時(shí),會(huì)將一行文本讀入模式空間,然后對其執(zhí)行腳本中的命令。處理完一行后,sed 會(huì)將模式空間的內(nèi)容輸出(除非使用了 -n 選項(xiàng)),然后讀取下一行。

‌保持空間‌:是 sed 的另一個(gè)緩沖區(qū),可以用于在腳本的不同部分之間傳遞數(shù)據(jù)。保持空間通常用于復(fù)雜的文本處理任務(wù)。

示例

‌示例 1:替換文本‌

將文件 example.txt 中所有的 "foo" 替換為 "bar":

sed 's/foo/bar/g' example.txt

‌示例 2:刪除行‌

刪除文件 example.txt 中所有包含 "baz" 的行:

sed '/baz/d' example.txt

‌示例 3:插入文本‌

在文件 example.txt 中所有包含 "qux" 的行之前插入一行 "Inserted line":

sed '/qux/i\Inserted line' example.txt

‌示例 4:打印特定行‌

打印文件 example.txt 中的第 2 到第 4 行:

sed -n '2,4p' example.txt

示例 5:使用保持空間交換兩行‌

假設(shè)你有一個(gè)文件 swap.txt,內(nèi)容如下:

Line 1
Line 2
Line 3

你想要交換第 1 行和第 3 行的位置??梢允褂靡韵?sed 腳本:

sed -e '1{h;d}' -e '3{G;s/\(.*\)\n\(.*\)/\2\n\1/}' swap.txt

解釋:

  • 1{h;d}:當(dāng)處理第 1 行時(shí),將其保存到保持空間(h),然后刪除模式空間的內(nèi)容(d),不輸出。
  • 3{G;s/\(.*\)\n\(.*\)/\2\n\1/}:當(dāng)處理第 3 行時(shí),將保持空間的內(nèi)容追加到模式空間(G),然后使用 s 命令交換兩行。

輸出將是:

Line 3
Line 2
Line 1

二、高級(jí)用法及技巧

1.使用地址范圍

sed 允許你指定地址范圍,以便對特定范圍內(nèi)的行執(zhí)行編輯命令。地址范圍可以是行號(hào)、正則表達(dá)式或兩者的組合。

  • ‌行號(hào)范圍‌:例如,2,4 表示第 2 到第 4 行。
  • ‌正則表達(dá)式范圍‌:例如,/start/,/end/ 表示從匹配 start 的行到匹配 end 的行(包括這兩行)。

示例:

# 刪除第 2 到第 4 行
sed '2,4d' example.txt
 
# 從匹配 "start" 的行到匹配 "end" 的行,將 "foo" 替換為 "bar"
sed '/start/,/end/s/foo/bar/g' example.txt

2.多命令組合

你可以使用 -e 選項(xiàng)或分號(hào) ; 來組合多個(gè) sed 命令。

示例:

# 使用 -e 選項(xiàng)組合命令
sed -e 's/foo/bar/g' -e '2,4d' example.txt
 
# 使用分號(hào)組合命令
sed 's/foo/bar/g; 2,4d' example.txt

3.模式空間與保持空間的高級(jí)應(yīng)用

模式空間和保持空間是 sed 的兩個(gè)重要緩沖區(qū)。通過巧妙地使用它們,你可以執(zhí)行復(fù)雜的文本處理任務(wù)。

  • ‌模式空間‌:用于存儲(chǔ)當(dāng)前處理的行。
  • ‌保持空間‌:用于在腳本的不同部分之間傳遞數(shù)據(jù)。

示例:

# 反轉(zhuǎn)文件中的行順序
sed '1!G;h;$!d' example.txt

解釋:

  • 1!G:對于非第一行,將保持空間的內(nèi)容追加到模式空間。
  • h:將模式空間的內(nèi)容復(fù)制到保持空間。
  • $!d:對于非最后一行,刪除模式空間的內(nèi)容(不輸出)。

4.分支與循環(huán)

sed 提供了分支(b 和 t 命令)和循環(huán)(: 和 ; 組合)的功能,可以用于構(gòu)建復(fù)雜的文本處理邏輯。

  • ‌分支‌:b 命令用于無條件跳轉(zhuǎn),t 命令用于在成功執(zhí)行替換后跳轉(zhuǎn)。
  • ‌循環(huán)‌:使用 : 標(biāo)記一個(gè)標(biāo)簽,然后使用 ; 和 b 命令實(shí)現(xiàn)循環(huán)。

示例:

# 打印文件中的奇數(shù)行
sed -n 'n;p' example.txt

解釋:

  • n:讀取下一行到模式空間,覆蓋當(dāng)前行。
  • p:打印模式空間的內(nèi)容。

由于 n 命令會(huì)覆蓋當(dāng)前行,因此這個(gè)腳本會(huì)跳過偶數(shù)行并打印奇數(shù)行。

5.使用 sed 進(jìn)行文本分析和轉(zhuǎn)換

sed 非常適合于文本分析和轉(zhuǎn)換任務(wù)。通過結(jié)合使用正則表達(dá)式、地址范圍和編輯命令,你可以輕松地提取、修改和生成文本數(shù)據(jù)。

示例:

# 提取文件中的所有電子郵件地址
sed -n 's/.*<\([^>]*\)>.*/\1/p' example.txt

解釋:

  • s/.*<\([^>]*\)>.*/\1/:使用正則表達(dá)式匹配電子郵件地址,并將其提取出來。
  • p:打印匹配的結(jié)果。

這個(gè)示例假設(shè)電子郵件地址被尖括號(hào)包圍,例如 <email@example.com>。

到此這篇關(guān)于Linux下Shell編程之sed命令的用法詳解的文章就介紹到這了,更多相關(guān)Linux Shell sed命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux查看磁盤信息的命令詳解

    Linux查看磁盤信息的命令詳解

    這篇文章主要介紹了Linux查看磁盤信息的命令,df與du命令,df 命令主要用于需要檢查文件系統(tǒng)上已使用和可用的磁盤空間的數(shù)量,du命令主要用于需要了解系統(tǒng)上的目錄或文件所使用的磁盤空間量,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-04-04
  • 使用shell腳本取出服務(wù)器圖片的方法

    使用shell腳本取出服務(wù)器圖片的方法

    Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。下面通過本文給大家介紹使用shell腳本取出服務(wù)器圖片的方法,需要的朋友參考下吧
    2017-12-12
  • Linux下的tar壓縮解壓縮命令詳解(小結(jié))

    Linux下的tar壓縮解壓縮命令詳解(小結(jié))

    這篇文章給大家分享了linux下的tar 壓縮解壓縮命令,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2017-03-03
  • shell簡單處理mysql查詢結(jié)果的方法

    shell簡單處理mysql查詢結(jié)果的方法

    今天小編就為大家分享一篇shell簡單處理mysql查詢結(jié)果的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Linux Shell 自動(dòng)交互功能實(shí)現(xiàn)

    Linux Shell 自動(dòng)交互功能實(shí)現(xiàn)

    本文主要介紹了Linux Shell 自動(dòng)交互功能實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • shell腳本連接、讀寫、操作mysql數(shù)據(jù)庫實(shí)例

    shell腳本連接、讀寫、操作mysql數(shù)據(jù)庫實(shí)例

    這篇文章主要介紹了shell腳本連接、讀寫、操作mysql數(shù)據(jù)庫實(shí)例,本文包含連接、讀取、插入、創(chuàng)建數(shù)據(jù)庫等操作示例,需要的朋友可以參考下
    2014-08-08
  • shell腳本換行問題實(shí)戰(zhàn)記錄

    shell腳本換行問題實(shí)戰(zhàn)記錄

    換行相信大家都不陌生,下面這篇文章主要給大家介紹了關(guān)于shell腳本換行問題的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • awk命令、awk編程語言詳細(xì)介紹和實(shí)例

    awk命令、awk編程語言詳細(xì)介紹和實(shí)例

    這篇文章主要介紹了awk命令、awk編程語言詳細(xì)介紹和實(shí)例,講解了如awk中的記錄、域、分割符,awk的內(nèi)建變量和運(yùn)算符等,需要的朋友可以參考下
    2014-07-07
  • Linux shell常用的73條命令總結(jié)

    Linux shell常用的73條命令總結(jié)

    對于經(jīng)常使用linux系統(tǒng)的朋友們來說,基本常用的shell命令是少不了的,下面這篇文中就為大家總結(jié)了Linux shell的常用命令,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • Linux執(zhí)行.sh文件時(shí)提示No such file or directory該怎么辦(三種解決辦法)

    Linux執(zhí)行.sh文件時(shí)提示No such file or directory該怎么辦(三種解決辦法)

    本文通過三種方法給大家介紹Linux執(zhí)行.sh文件,提示No such file or directory錯(cuò)誤的解決辦法,感興趣的朋友跟著小編一起學(xué)習(xí)學(xué)習(xí)吧
    2015-10-10

最新評(píng)論