如何使用Linux sed命令進行字符串替換

2021-01-07 格子裡外

Linux中sed命令功能強大,本文將詳細介紹如何使用sed命令進行字符串替換。

一、基本的替換

命令格式1:sed 's/原字符串/新字符串/' 文件

命令格式2:sed 's/原字符串/新字符串/g' 文件

這兩種命令格式的區別在於是否有個「g」。沒有「g」表示只替換第一個匹配到的字符串,有「g」表示替換所有能匹配到的字符串,「g」可以認為是「global」(全局的)的縮寫,沒有「全局的」結尾就不要替換全部,這樣就好記啦。命令可以使用正則表達式來處理。如下圖,第一個命令只是將第一個「b」替換成了「B」,其他的都沒有替換;而第二個命令將全文中的數字都替換成了「好的」。

只替換第一個匹配項
替換所有匹配項

二、替換某行內容

命令格式1:sed '行號c 新字符串' 文件

命令格式2:sed '起始行號,終止行號c 新字符串' 文件

第一個命令表示用新的字符串替換指定這一行的內容, 第二個命令表示用新字符串替換指定幾行的內容。如下圖,第一個命令將第2行內容替換成了「new test!」,第二個命令將第2到6行替換成了「new test!」。

替換指定行內容
替換指定幾行內容

三、多條件替換

命令格式:sed -e 命令1 -e 命令2 -e 命令3

有些時候有多個替換條件,那就可以使用「-e」參數將這些替換條件連接起來,一次性完成所有的替換操作。例如,可以將上述的兩種命令連接起來:「sed -e 's/原字符串/新字符串/' '行號c 新字符串' 文件」。如下圖,不僅將小寫「a」替換成了大寫「A",還將第2行內容替換成了「new test!」。

多條件替換

四、保存替換結果到文件中

命令格式:sed -i 命令

上述這些命令都只是將替換結果列印到屏幕上,如果想保存結果到文件中,就需要加上「-i」參數。

保存替換結果到文件中

注意,在輸入Linux命令前,一定要將輸入法切換成英文半角符號狀態。從Windows電腦上複製命令到Linux Terminal中執行時,也有可能遇到格式不正確造成的命令執行錯誤,這時建議手動重新輸入字符,如果覺得輸入麻煩,可以只刪除命令中的空格和最後一個字符後,重新輸入空格和最後一個字符。

相關焦點

  • Linux常用命令 - sed
    在處理文本文件時,通常需要在一個或多個文件中查找和替換文本字符串。sed 是一個流編輯器。它可以對文件和輸入流(如管道)執行基本的文本操作。使用 sed,您可以搜索、查找和替換、插入和刪除單詞和行。 它支持基本的和擴展的正則表達式,允許您匹配複雜的模式。接下來, 我將使用 sed 查找和替換字符串。我還將向您展示如何執行遞歸搜索和替換。
  • linux sed 命令
    sed命令整體可以幹嘛總體而言,sed命令可以對文本進行查找、刪除、插入、替換等操作。它跟vim或者vi命令最大的去區別是,後者只能通過人工交互的方式,對文本進行處理。而很多時候,我們希望腳本自動化的進行文本處理,那麼sed無疑是我們的好幫手命令簡介sed OPTIONS [SCRIPT] [INPUTFILE...]
  • Linux 三劍客 Awk、Sed、Grep 命令詳解
    詳細說明awk 是一種程式語言,用於在linux/unix下對文本和數據進行處理。數據可以來自標準輸(stdin)、一個或多個文件,或其它命令的輸出。它在命令行中使用,但更多是作為腳本來使用。awk有很多內建的功能,比如數組、函數等,這是它和C語言的相同之處,靈活性是awk最大的優勢。
  • LFCS 系列第一講:如何在 Linux 上使用 GNU sed 等命令來創建、編輯和操作文件
    第一講:如何在 Linux 上使用 GNU sed 等命令來創建、編輯和操作文件第二講:如何安裝和使用 vi/m 全功能文字編輯器第三講:歸檔文件/目錄並在文件系統中尋找文件第四講:為存儲設備分區,格式化文件系統和配置交換分區第五講:在 Linux 中掛載/卸載本地和網絡(Samba & NFS)文件系統第六講
  • Linux必知必會sed命令教程
    本文不會講 sed 的全部東西,只會從 sed 的工作原理、常見使用方法等方面進行說明和講解,同時也會給出大量的實踐用例來幫助更好的理解 sed 基本用法。文中的知識點真正掌握後,足以應付平時工作中的基本需求。它有自己的使用場景:工作原理 sed 作為一種非交互式編輯器,它使用預先設定好的編輯指令對輸入的文本進行編輯,完成之後輸出編輯結果。
  • 一些命令行小技巧:wc、sort、sed 和 tr | Linux 中國
    sed 的默認行為是在解析後列印每一行。這意味著由於使用了 p ,第 3 行到第 7 行列印了兩次。如何列印文件中特定的行?data$ sed -n '/linux/I p' data在這些例子中,我們在 / / 中使用了一個正則表達式。
  • 在命令行中如何解碼二次JSON編碼的字符串?
    如何在命令行中將這個結構展開呢?構造測試數據,如下是通過PHP命令行生成測試一個二次JSON encode的字符串php -r "echo json_encode(json_encode(['a' => ['b' => 1]]));"# "{\"a\":{\"b\":1}}"
  • 海量數據處理之cut、awk、sed命令詳解,數據分析必備技能,不難
    數據都存儲在文件中,文件中肉眼可見的數據無非就是各種有規則的字符的組合,比如日誌文件,小文件我們還可以認真閱讀,但是給你一個10M大小的數據文件,不亞於閱讀一本小說,更何況密密麻麻都是數據,我們可以通過cut、awk、sed這三個命令從規則文件中提取符合我們需要的數據,重要的是他們的運行速度非常的塊。
  • sed命令的基礎知識及簡單應用
    Sed是一Linux命令,全稱:Stream Editor,功能和awk類似,但是沒有awk功能強大,相對簡單,awk處理列的功能比awk差很多。Sed主要用於自動編輯一個或者多個文件,多用於腳本中對文件的處理。Sed命令對文件的進行增加、刪除、修改和查找操作,所以是學好sed命令是寫自動化腳本必須的基礎之一。
  • shell字符串單雙引號的坑
    在shell中單引號和雙引號括起來的字符串有什麼不同嗎?4(截圖來自 C語言中文網)很明顯,我犯的錯誤屬於第一種情況:由單引號包圍的字符串任何字符都會原樣輸出,在其中使用變量是無效的根據截圖所言,推而廣之:我們在命令行中使用的各種命令、運行的各種軟體本質上都是字符串,只不過我們沒有加上 單引號或雙引號作為標識,屬於 第三種情況。這種規則讓我們能夠通過空格來區分命令中的選項和參數。
  • MySQL批量替換指定欄位字符串SQL語句
    【IT168 技術】MySQL批量替換是我們經常會用到的功能,有時站內包含敏感詞,會給我們帶來麻煩,而在信息量較大的情況下,一篇篇查找、修改是不現實的。  用MySQL批量替換,甚是輕鬆。發布在這裡供參考,以備不時之需。
  • Linux sed命令
    命令是利用腳本來處理文本文件。通常 p 會與參數 sed -n 一起運行~s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!7、數據的搜尋並替換除了整行的處理模式之外, sed 還可以用行為單位進行部分數據的搜尋並取代。
  • linux文本處理三劍客之sed增刪改查
    收錄於話題 #linux 「sed(stream editor, 流編輯器)是linux下非常強大的非交互式的文本編輯器,主要功能是對文本的每一行數據進行匹配後操作,比如按行、按欄位
  • 史上最全的 Linux Shell 文本處理工具集錦,快收藏!
    Shell處理文本時最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;對shell腳本使用的原則是命令單行書寫,儘量不要超過2行;如果有更為複雜的任務需求,還是考慮python吧;我把 linux 相關的文章整理成了 PDF,關注公眾號 Java後端 並回復 666 下載。
  • 一篇文章學會shell工具篇之sed
    下面重點介紹一下有關sed的參數及action的操作方法 (1)-n參數,p命令的action (2) d命令的action (3)/pattern/s/pattern1/pattern2/:查找符合pattern的行,將該行第一個匹配pattern1的字符串替換為pattern2
  • 每天一個 Linux 命令(80): tr 命令
    tr 所有的功能均可由 sed 來完成,可以將 tr 視為 sed 一個極簡的實現。2.命令格式tr [OPTIONS] SET1 [SET2]3.選項說明-c, -C, --complement SET1 [SET2] 將字符集 SET1 以外的其他字符刪除或者轉換為字符集 SET2 中的最後一個字符(如果你指定了多個字符的話)-
  • 搞定Linux Shell文本處理工具,看完這篇集錦就夠了
    sort unsort.txt | uniq -d可指定每行中需要比較的重複內容:-s 開始位置 -w 比較字符數6、用tr進行轉換通用用法echo 12345 | tr '0-9' '9876543210' //加解密轉換,替換對應字符cat text| tr '\t' ' '  //制表符轉空格tr刪除字符
  • 淺談Liunx常用命令
    匹配一個非換行符的任意字符,如:/s.d/匹配s後接一個任意字符,最後是d* 匹配0個或多個字符,如:/*sed/匹配所有模板是一個或多個空格後緊跟sed的行[] 匹配一個指定範圍內的字符,如/[ss]ed/匹配sed和Sed[^] 匹配一個不在指定範圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行\(..\) 匹配子串,
  • shell三劍客之sed!
    同grep一樣,sed提供兩種方式:◆ stdout | sed [option] 「pattern command」◆ sed [option] 「pattern command」 file第一種是從文本中直接使用pattern匹配搜索第二種是從標準輸出中處理
  • shell腳本三劍客--grep、awk、sed
    此時可以使用[]進行查找,[ ]中無論有幾個字符,都僅代表一個字符,例如[io]表示匹配i或者o(5)查找連續字符範圍 {}使用「.」與「*」來設定零個到無限多個重複的字符,如果想要限制一個範圍內的重複的字符串該如何實現呢?