linux怎麼替換檔案中的字串

2022-03-24 19:01:09

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

本教學操作環境: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怎麼替換檔案中的字串的詳細內容,更多請關注TW511.COM其它相關文章!