Linux sed 命令 詳解

在 Linux 系統中,sedStream Editor)是一個非常強大且靈活的文本處理工具。它不僅可以用于簡單的文本替換、刪除和插入操作,還能實現復雜的文本轉換任務。


📌 一、什么是 sed?

sed 是一個基于模式匹配對文本進行過濾或修改的流編輯器。它可以:

  • 替換文本內容
  • 刪除指定行
  • 插入或追加新內容
  • 打印特定行
  • 使用正則表達式進行高級匹配
  • 多條命令組合處理

與交互式編輯器(如 vim)不同,sed 是非交互式的,適合在腳本中自動執行批量文本處理任務。


🔧 二、sed 基本語法

sed [選項] '命令' 文件名

示例:

sed 's/old/new/' file.txt

表示將 file.txt 中每一行的第一個 old 替換為 new


🧱 三、常用命令格式說明

命令含義
s/pattern/replacement/flags替換命令(最常用)
d刪除匹配的行
p打印匹配的行(常與 -n 搭配使用)
i\text在匹配行前插入文本
a\text在匹配行后追加文本
c\text替換整行內容
y/abc/xyz/字符替換(一一對應)

📚 四、實戰示例

? 示例 1:替換第一個匹配項(s 命令)

📄 原始內容(input.txt):
hello world
hello there
🔧 使用命令:
sed 's/hello/hi/' input.txt
? 輸出結果:
hi world
hi there

只替換每行中第一個出現的 hello


? 示例 2:替換所有匹配項(加 g 標志)

📄 原始內容(input.txt):
hello world hello
hello again
🔧 使用命令:
sed 's/hello/hi/g' input.txt
? 輸出結果:
hi world hi
hi again

g 表示全局替換,替換該行中所有匹配項。


? 示例 3:刪除某一行(d 命令)

📄 原始內容(input.txt):
apple
banana
orange
🔧 使用命令:
sed '2d' input.txt
? 輸出結果:
apple
orange

刪除第 2 行(banana)。


? 示例 4:刪除包含某個關鍵詞的行(/pattern/d

📄 原始內容(input.txt):
error: failed to connect
success: connection ok
error: timeout
🔧 使用命令:
sed '/error/d' input.txt
? 輸出結果:
success: connection ok

刪除所有包含 error 的行。


? 示例 5:打印特定行(-n + p

📄 原始內容(input.txt):
line one
line two
line three
🔧 使用命令:
sed -n '2p' input.txt
? 輸出結果:
line two

只打印第 2 行。-n 阻止默認輸出,p 顯式打印指定行。


? 示例 6:在匹配行前插入內容(i\

📄 原始內容(input.txt):
header line
data line
footer line
🔧 使用命令:
sed '/data/i\--- INSERTED LINE ---' input.txt
? 輸出結果:
header line
--- INSERTED LINE ---
data line
footer line

在包含 data 的行前面插入新內容。


? 示例 7:在匹配行后追加內容(a\

📄 原始內容(input.txt):
start section
some data
end section
🔧 使用命令:
sed '/end/a\--- APPENDED LINE ---' input.txt
? 輸出結果:
start section
some data
end section
--- APPENDED LINE ---

在包含 end 的行后面追加新內容。


? 示例 8:替換整行內容(c\

📄 原始內容(input.txt):
old config value
new config value
🔧 使用命令:
sed '/old/c\updated config value' input.txt
? 輸出結果:
updated config value
new config value

替換整行內容。


? 示例 9:字符替換(y/abc/xyz/

📄 原始內容(input.txt):
abc def ghi
🔧 使用命令:
sed 'y/abc/xyz/' input.txt
? 輸出結果:
zyx def ghi

a->z, b->y, c->x 一一替換。


? 示例 10:刪除空行(/^$/d

📄 原始內容(input.txt):
This is a line.Another line.
🔧 使用命令:
sed '/^$/d' input.txt
? 輸出結果:
This is a line.
Another line.

刪除空白行。


? 示例 11:刪除注釋行(以 # 開頭)

📄 原始內容(input.txt):
# comment line
valid line
# another comment
🔧 使用命令:
sed '/^#/d' input.txt
? 輸出結果:
valid line

刪除以 # 開頭的注釋行。


? 示例 12:給每行加行號(結合兩個 sed 命令)

📄 原始內容(input.txt):
apple
banana
cherry
🔧 使用命令:
sed '=' input.txt | sed 'N;s/\n/ /'
? 輸出結果:
1 apple
2 banana
3 cherry

給每行加上行號。


? 示例 13:提取兩個關鍵字之間的內容

📄 原始內容(input.txt):
start_key
line one
line two
end_key
another line
🔧 使用命令:
sed -n '/start_key/,/end_key/p' input.txt
? 輸出結果:
start_key
line one
line two
end_key

提取從 start_keyend_key 之間的段落。


? 示例 14:變量替換(配置文件更新)

📄 原始內容(config.ini):
server=127.0.0.1
port=8080
enabled=true
🔧 使用命令:
sed 's/^port=.*/port=9090/' config.ini
? 輸出結果:
server=127.0.0.1
port=9090
enabled=true

替換配置文件中的端口號。


💾 五、保存修改

默認情況下,sed 不會修改原文件,只是輸出結果。如果需要保存更改,可以結合重定向:

sed 's/old/new/g' input.txt > output.txt

或者使用 -i 參數直接修改原文件(慎用):

sed -i 's/old/new/g' input.txt

你可以添加 .bak 后綴來備份原文件:

sed -i.bak 's/old/new/g' input.txt

🧪 六、總結

sed 是 Linux 下非常實用的文本處理利器,掌握其基本命令和正則表達式技巧,可以大幅提升你在日常運維、日志分析、自動化腳本編寫等方面的效率。

記住一句話:

grep 查找,sed 修改,awk 分析 —— 這就是 Linux 文本處理三劍客!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87995.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87995.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87995.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

項目進度同步不及時,如何提升信息透明度

項目進度同步不及時的核心問題包括溝通渠道不暢通、缺乏統一的信息平臺、未建立明確的進度更新機制、團隊意識不足、責任劃分不明確等。其中,缺乏統一的信息平臺最為關鍵。統一的信息平臺能夠確保所有相關人員實時掌握最新的進度狀態,避免信息孤島&#…

使用各種CSS美化網頁

實驗目的1.理解CSS的概念,掌握CSS定義樣式的方法,具備使用CSS和相關庫進行界面樣式設計的能力。 2.掌握Bootstrap 5的基本使用方法。3.Bootstrap框架練習實驗步驟1. 實驗準備創建一個HTML文件(如 index.html)。引入Bootstrap5的CS…

在PPT的文本框中,解決一打字,英文雙引號就變成中文了

問題:在制作PPT的過程中,插入文本框,在里面輸入代碼類的格式時,使用英文的雙引號"",但是只要在后面輸入內容,或者逗號等,英文雙引號就變成中文了,很煩原因:大概…

iOS 證書過期如何處理

找到鑰匙串位置創建新的CSR文件。點擊菜單中鑰匙串訪問—>證書助理—>從證書頒發機構請求證書…進入證書助理,填寫信息(用戶名稱和郵箱隨便寫),請求是 選擇 存儲到磁盤創建好CSR文件,回到developer 證書管理中心…

CODESYS + 全志T113-i + 國產系統OneOS,打造新一代工業控制解決方案!

創龍科技與中移物聯網有限公司、CODESYS攜手合作,成功實現了T113-i工業評估板對國產系統OneOS CODESYS軟件的適配,此舉將讓工業自動化領域的工程師們更高效地開發,并為眾多企業產品的快速上市提供強有力的保障。 解決方案簡介 CODESYS簡介 …

三、jenkins使用tomcat部署項目

一、安裝tomcattomcat本來應該是第3臺服務器的(第一臺:gitlab,第二臺:jenkins,第三臺:tomcat),我這里資源有限,就把tomcat安裝jenkins服務器了。#解壓tocmcat [rootbogon…

華為eNSP防火墻實驗(包含詳細步驟)

拓撲圖 這里要用的防火墻是 , 需要導入 目錄 防火墻配置1(啟動圖形化界面) cloud配置 緩沖區服務器配置 防火墻配置2(各端口的ip地址) 外部路由器配置 本地路由器配置 防火墻配置3(配置安全策略&a…

Linux/Unix線程及其同步(create、wait、exit、互斥鎖、條件變量、多線程)

線程 文章目錄線程I 線程基本概念1、為什么引入線程2、PthreadsII 線程基本操作1、創建線程2、終止線程3、線程ID4、連接已終止線程5、線程基本操作示例III 通過互斥量同步線程1、基本概念2、互斥量(Mutex)3、靜態分配互斥量4、互斥量鎖定與解鎖5、互斥量…

vue3 el-table 行數據沾滿格 取消自動換行

在 Vue.js 使用 Element UI 或 Element Plus 的 <el-table> 組件時&#xff0c;如果你希望其中的單元格內容不自動換行&#xff0c;可以通過設置 CSS 樣式來實現。這里有幾種方法可以做到這一點&#xff1a;方法1&#xff1a;使用 CSS 樣式你可以直接在 <el-table-col…

操作系統級TCP性能優化:高并發場景下的內核參數調優實踐

在高并發網絡場景中&#xff0c;操作系統內核的TCP/IP協議棧配置對系統性能起著決定性作用。本文聚焦操作系統層面&#xff0c;深入解析內核參數調優策略&#xff0c;幫助讀者構建穩定高效的網絡通信架構。 一、連接管理參數優化&#xff1a;從三次握手到隊列控制 1.1 監聽隊列…

基于物聯網的智能交通燈控制系統設計

標題:基于物聯網的智能交通燈控制系統設計內容:1.摘要 摘要&#xff1a;隨著城市交通流量的不斷增加&#xff0c;傳統交通燈控制方式已難以滿足高效交通管理的需求。本研究的目的是設計一種基于物聯網的智能交通燈控制系統。方法上&#xff0c;該系統利用物聯網技術&#xff0c…

nodejs中使用UDP傳遞信息

什么是UDP?UDP&#xff08;User Datagram Protocol&#xff0c;用戶數據報協議&#xff09;是一種無連接的網絡傳輸協議&#xff0c;位于 OSI 模型的傳輸層&#xff08;第四層&#xff09;&#xff0c;與 TCP&#xff08;傳輸控制協議&#xff09;同為互聯網的核心協議之一。它…

App Trace功能實戰:一鍵拉起應用實踐

一、App Trace功能概述App Trace是一種用于監控和分析應用啟動流程的技術&#xff0c;它可以幫助開發者&#xff1a;追蹤應用冷啟動/熱啟動的全過程分析啟動過程中的性能瓶頸優化應用啟動速度實現應用間的快速拉起二、一鍵拉起應用的實現方案1. Android平臺實現方案1&#xff1…

Flink ClickHouse 連接器數據讀取源碼深度解析

一、引言 在大數據處理流程中&#xff0c;從存儲系統中高效讀取數據是進行后續分析的基礎。Flink ClickHouse 連接器為我們提供了從 ClickHouse 數據庫讀取數據的能力&#xff0c;使得我們可以將 ClickHouse 中存儲的海量數據引入到 Flink 流處理或批處理作業中進行進一步的分析…

云原生技術與應用-容器技術技術入門與Docker環境部署

目錄 一.Docker概述 1.什么是Docker 2.Docker的優勢 3.Docker的應用場景 4.Docker核心概念 二.Docker安裝 1.本安裝方式使用阿里的軟件倉庫 2.Docker鏡像操作 3.Docker容器操作 一.Docker概述 因為 Docker 輕便、快速的特性&#xff0c;可以使應用達到快速迭代的目的。每次小…

第2章,[標簽 Win32] :匈牙利標記法

專欄導航 上一篇&#xff1a;第2章&#xff0c;[標簽 Win32] &#xff1a;Windows 數據類型 回到目錄 下一篇&#xff1a;第2章&#xff0c;[標簽 Win32] &#xff1a;兼容 ASCII 字符與寬字符的 Windows 函數調用 本節前言 在初學編程的時候&#xff0c;我們給變量命令的…

從深度學習的角度看自動駕駛

從深度學習的角度看自動駕駛 A Survey of Autonomous Driving from a Deep Learning Perspective 我們探討了深度學習在自主駕駛中的關鍵模塊&#xff0c;例如感知&#xff0c;預測&#xff0c;規劃以及控制。我們研究了自主系統的體系結構&#xff0c;分析了如何從模塊化&…

java+vue+SpringBoo基于Hadoop的物品租賃系統(程序+數據庫+報告+部署教程+答辯指導)

源代碼數據庫LW文檔&#xff08;1萬字以上&#xff09;開題報告答辯稿ppt部署教程代碼講解代碼時間修改工具 技術實現 開發語言&#xff1a;后端&#xff1a;Java 前端&#xff1a;vue框架&#xff1a;springboot數據庫&#xff1a;mysql 開發工具 JDK版本&#xff1a;JDK1.8 數…

【文獻筆記】Automatic Chain of Thought Prompting in Large Language Models

Automatic Chain of Thought Prompting in Large Language Models 原文代碼&#xff1a;https://github.com/amazon-research/auto-cot 標題翻譯&#xff1a;大規模語言模型中的自動思維鏈提示 1. 內容介紹 在提示詞中提供思考步驟被稱為思維鏈&#xff08;CoT&#xff09;&…

【Behavior Tree】-- 行為樹AI邏輯實現- Unity 游戲引擎實現

行為樹簡易敵人AI 前言&#xff1a; 有些天沒更新新文章了&#xff0c;主要是最近科一有些頭疼&#xff0c;而且最近琢磨這個行為樹代碼有些難受&#xff0c;但是終于熬出頭了&#xff0c;MonoGame的系列會繼續更新的&#xff0c;今天不說別的就說困擾我兩三天的行為樹 有限狀態…