目錄
- 前言
- 一、sed命令介紹
- 1. sed命令簡介
- 2. sed命令的基本語法
- 3. 常用的sed命令選項
- 4. 常用的sed編輯命令
- 二、sed命令示例用法
- 1. 替換文字
- 2. 刪除匹配行
- 3. 列印特定行
- 4. 在指定行之前插入文字
- 5. 從檔案中讀取編輯命令
- 6. 使用sed命令在core-site.xml檔案中的<configuration>標籤之前新增新內容
- 7. 使用sed命令替換core-site.xml檔案中的<configuration></configuration>標籤之間的內容
- 總結
前言
在Shell程式設計中,對文字進行處理和轉換是一項常見的任務。sed命令作為一種流式文字編輯器,提供了強大的文字處理能力,可以透過簡單的命令實現複雜的文字操作。掌握sed命令的基本用法,可以極大地提高文字處理的效率和靈活性。
本文將從sed命令的基本概念和語法開始介紹,然後透過例項演示常見的用法,幫助讀者快速上手並靈活運用sed命令。無論是替換文字、刪除匹配行、列印特定行,還是插入文字、讀取編輯命令,本文都提供了詳細的示例和解釋,幫助讀者理解和掌握sed命令的使用技巧。
一、sed命令介紹
1. sed命令簡介
sed
(Stream Editor)是shell程式設計中的一個流式文字編輯器,用於對文字進行轉換、替換和處理。它逐行讀取輸入文字,並根據指定的編輯規則對文字進行修改。
2. sed命令的基本語法
sed [選項] '編輯命令' 檔案
其中,編輯命令
是一系列的編輯操作,用於指定對文字的處理方式。檔案
是要處理的輸入檔案。
3. 常用的sed命令選項
-e <命令>
:指定一個或多個編輯命令。-f <指令碼檔案>
:從指定的指令碼檔案中讀取編輯命令。-i
:直接在原始檔案上進行修改(在某些版本中可能需要指定備份檔案的副檔名)。-n
:禁止自動列印模式空間內容。-r
:啟用擴充套件的正規表示式語法(在某些版本中使用-E
選項)。
4. 常用的sed編輯命令
s/模式/替換/
:替換模式匹配的文字。n
:列印模式空間的內容。d
:刪除模式空間的內容。p
:列印模式空間的內容。i\文字
:在當前行之前插入文字。a\文字
:在當前行之後追加文字。c\文字
:用新文字替換匹配行。r 檔案
:將檔案的內容插入到當前行之後。w 檔案
:將模式空間的內容寫入檔案。
二、sed命令示例用法
1. 替換文字
sed -i "s|^dataDir=.*|dataDir=${installDir}/zookeeper-${version}/zk_snapshot|" "${installDir}/zookeeper-${version}/conf/zoo.cfg"
此程式碼來自:zookeeper安裝教程:使用shell指令碼在centos上進行zookeeper自動化下載安裝配置(單機版)
解釋:
-i
: 是sed命令的選項之一,表示直接修改檔案內容,而不是輸出到標準輸出。^dataDir=
: 正規表示式中的^表示行的開頭,dataDir=表示匹配以dataDir=開頭的行。.*
: 表示匹配任意字元(除了換行符)的任意次數。dataDir=${installDir}/zookeeper-${version}/zk_snapshot
: 是替換後的內容。"${installDir}/zookeeper-${version}/conf/zoo.cfg"
: 這是要進行替換操作的檔案路徑。
2. 刪除匹配行
sed '/pattern/d' file.txt
/pattern/
: 正規表示式模式,用於匹配檔案中的行。可以根據需要替換為具體的模式。d
: d表示刪除匹配到的行。file.txt
: 這是要進行操作的檔案路徑。
3. 列印特定行
sed -n '5p' file.txt
解釋:
-n
: 是sed命令的選項之一,表示只輸出經過處理的行,而不是全部輸出。'5p'
: 這是sed命令的列印操作部分。它使用了數字5來指定要列印的行號,並使用p表示列印該行。file.txt
: 這是要進行操作的檔案路徑。
4. 在指定行之前插入文字
sed '3i\Insert this line' file.txt
解釋:
'3i\Insert this line'
: 這是sed命令的插入操作部分。它使用了3來指定要插入的行號,並使用i表示插入操作。\Insert this line
是要插入的文字內容,\用於轉義特殊字元。
file.txt: 這是要進行操作的檔案路徑。
5. 從檔案中讀取編輯命令
sed -f script.sed file.txt
-f script.sed
: 這是sed命令的選項,用於指定要執行的指令碼檔案。script.sed
是包含了多個sed操作的指令碼檔案的路徑。file.txt
: 這是要進行操作的檔案路徑。
6. 使用sed命令在core-site.xml檔案中的<configuration>標籤之前新增新內容
sed -i '/<\/configuration>/i '"$new_content"'' /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
-i
: 這是sed命令的選項,表示直接修改原始檔案,而不是將結果輸出到標準輸出。
'/<\/configuration>/i '"$new_content"''
: 這是sed命令的插入操作部分。/<\/configuration>/
是一個正規表示式,用於匹配檔案中的標籤。i
表示插入操作。"$new_content"
是一個變數,用於指定要插入的新內容。
/opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
: 這是要進行操作的檔案路徑。
7. 使用sed命令替換core-site.xml檔案中的<configuration></configuration>標籤之間的內容
sed -i '/<configuration>/,/<\/configuration>/c '"$new_content"'' /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
此程式碼來自:hadoop安裝與配置:使用Shell指令碼一鍵下載、安裝、配置Hadoop(單機版)
解釋:
-i
: 這是sed命令的選項,表示直接修改原始檔案,而不是將結果輸出到標準輸出。'/<configuration>/,/<\/configuration>/c '"$new_content"''
: 這是sed命令的替換操作部分。/<configuration>/,/<\/configuration>/
是一個範圍地址,用於匹配檔案中位於和 之間的內容。c
表示替換操作。"$new_content"
是一個變數,用於指定要替換的新內容。/opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
: 這是要進行操作的檔案路徑。
總結
sed命令是一種強大的流式文字編輯器,可以對文字進行轉換、替換和處理。本文介紹了sed命令的基本概念和語法,包括常用的選項和編輯命令。透過例項演示,我們展示了sed命令在替換文字、刪除匹配行、列印特定行、插入文字、讀取編輯命令等方面的用法。
掌握sed命令可以幫助我們更高效地處理和轉換文字,提高工作效率。希望本文對讀者理解和使用sed命令有所幫助,並能在實際工作中靈活運用。
希望本教程對您有所幫助!如有任何疑問或問題,請隨時在評論區留言。感謝閱讀!