首頁 >運維 >linux運維 >linux怎麼替換檔案中的字串

linux怎麼替換檔案中的字串

青灯夜游
青灯夜游原創
2022-03-24 18:12:1726508瀏覽

在linux中,可以利用sed指令來尋找和取代檔案中的字串,該指令採用的是流編輯模式,可以根據正規表示式來匹配和處理文字檔案中的資料;取代語法為“sed 's/要搜尋的字串或正規表示式/替換值/g' 要執行操作的檔案名稱”。

linux怎麼替換檔案中的字串

本教學操作環境:linux5.9.8系統、Dell G3電腦。

當你在使用文字檔案時,很可能需要尋找和取代檔案中的字串。在 Linux 中這可以透過使用 sed 指令來完成,sed 指令主要用來取代一個檔案中的文字。

sed 指令是什麼

sed 指令表示 Stream Editor(流編輯器),用來在 Linux 上執行基本的文字操作。它可以執行各種功能,如搜尋、尋找、修改、插入或刪除檔案。

sed 指令採用的是流編輯模式,可以執行複雜的正規表示式匹配。

sed 指令會根據正規表示式來匹配和處理文字檔案中的資料。

它可用於以下目的:

  • 尋找並取代符合給定的格式的內容。

  • 在指定行中尋找和取代符合給定的格式的內容。

  • 在所有行中尋找和取代符合給定的格式的內容。

  • 搜尋並同時取代兩種不同的模式。

sed 指令取代檔案中的字串

常見的 sed 替換字串的語法。

sed -i 's/Search_String/Replacement_String/g' Input_File

首先我們需要了解 sed 語法來做到這一點。請參閱有關的細節。

  • sed:這是一個 Linux 指令。

  • -i:這是 sed 指令的選項,它有什麼作用?預設情況下,sed 會列印結果到標準輸出。當你使用 sed 添加這個選項時,那麼它會在適當的位置修改文件。當你加上一個後綴(例如,-i.bak)時,就會建立原始檔案的備份。

  • s:字母 s 是一個替換指令。

  • Search_String:搜尋一個給定的字串或正規表示式。

  • Replacement_String:替換的字串。

  • g:全域替換標誌。預設情況下,sed 指令會取代每一行第一次出現的模式,它不會取代行中的其他的符合結果。但是,提供了該替換標誌時,所有匹配都將被替換。

  • /:分界符。

  • Input_File:要執行操作的檔案名稱。

讓我們來看看檔案中用sed指令來搜尋和轉換文字的一些常用範例。

我們已經建立了用於演示的以下文件。

# cat sed-test.txt
1 Unix unix unix 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

1) 如何找出並取代每一行中「第一次」模式匹配

下面的 sed 指令用 linux 取代檔案中的 unix。這只是改變了每一行模式的第一個實例。

# sed 's/unix/linux/' sed-test.txt
1 Unix linux unix 23
2 linux Linux 34
3 linuxlinux UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

2) 如何找出並取代每一行中「第N 次」出現的模式

在行中使用/1、/2…/n 等標誌來代替對應的匹配。

下面的 sed 指令在一行中用 linux 來取代 unix 模式的第二個實例。

# sed 's/unix/linux/2' sed-test.txt
1 Unix unix linux 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

3) 如何搜尋並取代每一行中所有的模式實例

下面的sed 指令以linux 取代unix 格式的所有實例,因為g 是全域替換標誌。

# sed 's/unix/linux/g' sed-test.txt
1 Unix linux linux 23
2 linux Linux 34
3 linuxlinux UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

4) 如何尋找並取代一行中從「第N 個」開始的所有符合的模式實例

下面的sed 指令在一行中取代從模式的“第N 個”開始的匹配實例。

# sed 's/unix/linux/2g' sed-test.txt
1 Unix unix linux 23
2 linux Linux 34
3 linuxunix UnixLinux
linux /bin/bash CentOS Linux OS
Linux is free and opensource operating system

相關推薦:《Linux影片教學

以上是linux怎麼替換檔案中的字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn