運維筆記:流編輯器sed命令用法解析

運維筆記
sed命令用法解析

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at CSDN: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/139298840
HuaWei:https://bbs.huaweicloud.com/blogs/428252

【介紹】:本文sed命令用法。

在這里插入圖片描述


1. sed命令簡介

sed(stream editor)是一個強大的文本處理工具,用于對文本流或文件進行過濾和轉換。它主要用于自動編輯一個或多個文件;簡化對文件的重復操作;編寫轉換程序等。其語法格式為:

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

其中可選選項([OPTION]部分)包括:

  -n, --quiet, --silent 抑制自動打印模式空間--debug           注釋程序執行-e script, --expression=script      將腳本添加到要執行的命令中-f script-file, --file=script-file  將腳本文件的內容添加到要執行的命令中--follow-symlinks               處理時跟隨符號鏈接   -i[SUFFIX], --in-place[=SUFFIX]     就地編輯文件(如果提供了后綴,則制作備份)-l N, --line-length=N    指定 `l' 命令的期望換行長度--posix              禁用所有 GNU 擴展-E, -r, --regexp-extended 在腳本中使用擴展正則表達式(為便于移植,請使用 POSIX -E)。-s, --separate    將文件視為獨立的而不是單一的連續長流。--sandbox     在沙盒模式下操作(禁用 e/r/w 命令)。-u, --unbuffered  從輸入文件加載最少量的數據并更頻繁地刷新輸出緩沖區-z, --null-data   以 NUL 字符分隔行--help        顯示此幫助信息并退出--version     輸出版本信息并退出

如果沒有指定 -e--expression-f--file 選項,則第一個非選項參數將被視為要解釋的 sed 腳本。所有剩余的參數都是輸入文件的名稱;如果沒有指定輸入文件,則讀取標準輸入。

2. 實際運用舉例

2.1 刪除文本中的空白行

sed '/^$/d' file.txt

這個命令會顯示 file.txt 中所有非空行,不修改原文件。其中,使用正則表達式^$ 匹配空行,即開始和結束之間沒有任何字符的行。d 命令用于刪除匹配的行。

2.2 文本替換:將所有出現的 “apple” 替換為 “orange”

sed 's/apple/orange/g' file.txt

這個命令會顯示替換后的內容,不修改原文件。其中:

  • s 表示替換操作。

  • apple 是要查找的文本。

  • orange 是替換后的文本。

  • g 表示全局替換,即替換每一行中的所有匹配項。

例如當前目錄有一個file.text文件為:
在這里插入圖片描述
執行該命令后輸出結果為:
在這里插入圖片描述
可見,文檔中所有的“apple”都被替換成了“orange”

2.3 在每行的末尾添加文本

sed 's/$/ end of line/' file.txt

這個命令會在每行的末尾添加 " end of line" 文本,它將顯示修改后的內容,不會修改原文件。其中:

  • $ 在正則表達式中表示行的末尾。

例如當前目錄有一個file.text文件為:
在這里插入圖片描述

執行該命令后輸出結果為:

在這里插入圖片描述

2.4 打印文件的一些行

sed -n '2,6p' file.txt

這個示例的命令用于顯示第 2 行到第 6行的內容。其中:

  • -n 選項與 p 命令一起使用,用于抑制自動打印并只打印指定的行。

  • 2,6 指定了行范圍。

例如當前目錄有一個file.text文件為:
在這里插入圖片描述
執行該命令后輸出結果為:

在這里插入圖片描述

這不會修改原文件。

2.5 將文件中的所有數字增加 1

sed 's/[0-9]/&1/g' file.txt

這個命令會在每個數字后面添加 1,如 8 變為 81,顯示修改后的內容,不修改原文件。其中:

  • 正則 [0-9] 匹配任何單個數字;

  • & 代表匹配到的整個部分(這里是單個數字);

  • &1 表示在匹配到的數字后添加 1;

例如有一個file.text文件為:
在這里插入圖片描述
執行該命令后的結果為:
在這里插入圖片描述
這不會改變原文件的內容。

2.6 注釋掉包含特定文本的行

sed '/apple$/s/^/#/' file.txt

這個命令會在所有包含 “pattern” 的行前添加 #,顯示修改后的內容打印,不修改原文件。其中:

  • 正則/apple$/ 查找包含以 “apple” 結尾的行。

  • s/^/#/ 將這些行的開始替換為 “#”,即添加注釋。

例如有一個file.text文件為:
在這里插入圖片描述
執行該命令后的結果為:
在這里插入圖片描述
可見,由于第1行、第3行以“apple”結尾,輸出的內容中這兩行前面添加了一個“#”號。

2.7 刪除文件中的最后一行

sed '$d' file.txt

這個命令會刪除 file.txt 的最后一行,顯示修改后的內容,不修改原文件。其中:

  • $ 表示文件的最后一行。

  • d 是刪除命令。

例如有一個file.text文件為:
在這里插入圖片描述
執行該命令后的結果為:
在這里插入圖片描述

2.8 將文件中的第一行移動到最后一行

sed '1h;1d;$G' file.txt

這個命令會將第一行移動到文件的最后,顯示修改后的內容,不修改原文件。其中:

  • 1h 表示將第一行復制到暫存緩沖區。

  • 1d 表示刪除第一行。

  • $G 表示在文件的最后一行后追加暫存緩沖區的內容。

例如有一個file.text文件為:
在這里插入圖片描述
執行該命令后的結果為:

在這里插入圖片描述

3. 就地編輯

之前給出的示例都不會直接修改文件,但是很多時候我們是希望直接修改文件的。就地編輯是 sed 命令的一個非常有用的功能,允許直接修改文件而不是僅僅輸出修改后的結果。這通過 -i 選項實現,可以選擇性地指定一個后綴來創建原文件的備份。

3.1 就地編輯示例

例如假設有一個名為 example.txt 的文件,內容如下:

Hello, this is a test file.
This file contains some sample text.
We will replace the word 'sample' with 'example'.

在這里插入圖片描述

執行命令:

sed -i 's/sample/example/g' example.txt

這里:

  • -i:表示“就地編輯”,即直接修改原文件而不是輸出到標準輸出。
  • s:表示替換操作。
  • g:表示全局替換,即在整個文件中進行替換,而不僅僅是每行的第一個匹配項。

修改后的 example.txt 文件內容將變為:

Hello, this is a test file.
This file contains some example text.
We will replace the word 'example' with 'example'.

在這里插入圖片描述

可見最后一行的’sample’變成了’example’。

3.2 創建備份并就地編輯

如果你想在修改文件的同時創建一個備份,可以在 -i 選項后添加一個后綴。這個后綴將被用作備份文件的擴展名。

sed -i.bak 's/old_text/new_text/g' file.txt

這個命令不僅會修改 file.txt,還會創建一個名為 file.txt.bak 的備份文件,其中包含原始內容。

繼續使用上面的 example.txt 文件:

Hello, this is a test file.
This file contains some sample text.
We will replace the word 'sample' with 'example'.

執行命令:

sed -i.bak 's/example/sample/g' example.txt

這將把文件中的 “example” 替換回 “sample”,并創建一個包含修改前內容的備份文件 example.txt.bak。其中:

  • -i.bak:表示“就地編輯”,并指定 .bak 作為備份文件的后綴。這意味著在修改原文件之前,sed 會先將原文件 example.txt 復制一份,命名為 example.txt.bak

    • s:表示替換操作。

    • example:這是要被替換的文本模式,即查找文本中所有出現的 “example”。

    • sample:這是替換后的文本,即將找到的 “example” 替換為 “sample”。

    • g:表示全局替換,即在整個文件中進行替換,而不僅僅是每行的第一個匹配項。

修改后的 example.txt 文件內容將變為:

Hello, this is a test file.
This file contains some sample text.
We will replace the word 'sample' with 'sample'.

備份文件 example.txt.bak 的內容為:

Hello, this is a test file.
This file contains some example text.
We will replace the word 'example' with 'example'.

4. 結論與應用

sed 是一個極其強大的流編輯器,它允許我們通過簡單的命令行操作來執行復雜的文本處理任務。無論是進行簡單的文本替換、刪除特定行、還是更復雜的文本操作,sed 都能提供高效且靈活的解決方案。通過上述示例,我們可以看到 sed 在處理各種文本編輯任務時的實用性和便捷性。

  • 自動化處理sed 可以用于腳本中,自動化處理大量文件,減少重復勞動。例如,編寫一個Dockerfile時,我們可以使用sed來完成文本就地編輯工作:

    RUN sed -i 's/# DBPassword=/DBPassword=zabbix/g' /etc/zabbix/zabbix_server.conf
    

    其中:

    • -i:這個選項告訴 sed 直接修改文件,而不是輸出修改后的內容到標準輸出。這稱為“就地編輯”;

    • 's/# DBPassword=/DBPassword=zabbix/g':這是一個 sed 的替換命令,具體包含以下部分:

      • s:表示進行替換操作。
      • # DBPassword=:這是要被替換的文本模式,即查找以 # DBPassword= 開頭的文本。這通常表示該行是被注釋的。
      • DBPassword=zabbix:這是替換后的文本,即將找到的文本替換為 DBPassword=zabbix。這個操作實際上是取消注釋并設置數據庫密碼為 zabbix`;
      • g:表示全局替換,即在整個文件中進行替換,而不僅僅是每行的第一個匹配項。
    • /etc/zabbix/zabbix_server.conf:這是要修改的文件路徑。

  • 文本分析:可以快速修改或提取文件中的數據,對于日志分析、數據抽取等場景尤為有用。

  • 編程輔助:對源代碼進行批量修改,如批量添加注釋、修改變量名等。

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

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

相關文章

數據結構與算法-有效的括號

數據結構與算法-有效的括號 大家好,歡迎來到我們的算法學習系列。今天是我們的第一篇文章,我們將探討一個經典的面試題目——有效的括號匹配問題。 什么是有效的括號匹配? 在許多編程語言中,括號用于定義代碼塊、函數參數等。確…

Matlab 結構光相移法(單頻多相)

文章目錄 一、簡介1、基于點的測距2、基于條紋的測距二、條紋編碼2.1 二進制編碼2.2相移法三、實現代碼參考文獻一、簡介 在介紹相移法之前,我們需要先了解一下為啥會有相移法,了解了其來龍去脈,則更容易去應用它。 1、基于點的測距 首先我們從點的測距開始,這有點類似于立…

每日一題《leetcode--117.填充每個結點的下一個右側結點指針||》

https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/ 這道題與我之前發布的題目116是一樣的解題過程,只是本題所給的數組大小與116不同,這是需要注意的。 116題目鏈接: http://t.csdnimg.cn/3Ub02 struct Node* c…

推導n維鏡像變換公式(householder transform)

n維鏡像變換公式,就是將空間某個點 X 0 X_0 X0?,以某個平面對對稱平面,平面法向量維 v v v,該平面過空間原點。計算 X 0 X_0 X0?的鏡像。假設鏡像為 X 1 X_1 X1?。 鏡像需要滿足下面兩個條件 (1) X 0 X…

RAID配置實戰

概念 raid磁盤陣列:可以用不同的硬盤分區,組成一個邏輯上的硬盤。具有高可用 raid級別: raid0 :條帶化存儲:數據分散在多個物理硬盤上的存儲方式。利用多個磁盤并行讀取和寫入。存儲性能和讀寫性能是最好的。沒有冗…

解讀《互聯網政務應用安全管理規定》網絡和數據安全中的身份認證和審計合規建設

為保障互聯網政務應用安全,由中央網絡安全和信息化委員會辦公室、中央機構編制委員會辦公室、工業和信息化部、公安部制定的《互聯網政務應用安全管理規定》近日印發,自2024年7月1日起施行。 規定共8章,包括總則、開辦和建設、信息安全、網絡…

端到端目標檢測 |從DETR 到 GroundingDINO

文章目錄 一,DETR1. 簡介2. 亮點3. 細節4. 總結一下 二,GroundingDINOGrounding DINO的整體流程Grounding DINO的目標函數 一,DETR 之前的目標檢測框架,需要很多的人工干預,很多的先驗知識,而且可能還需要…

Pandas格式化DataFrame的浮點數列

在呈現數據的同時,以所需的格式顯示數據也是一個重要而關鍵的部分。有時,值太大了,我們只想顯示其中所需的部分,或者我們可以說以某種所需的格式。 讓我們看看在Pandas中格式化DataFrame的數值列的不同方法。 例1:將…

?【純干貨】Matplotlib總結,任何項目都用得到呦?

Matplotlib 在很多人眼里是無敵的存在,而且可以說是無敵的存在。 走過數據科學的路,路上必然有Matplotlib 的風景在你周圍。 如果同一個項目,你的用了matplotlib 不僅有基本圖形、定制化圖形、多個坐標軸、3D繪圖,還有動態交互繪…

DNSlog環境搭建

阿里云域名公網VPS地址 購買阿里云域名后設置“自定義DNSHOST” DNS服務器填寫ns1和ns2 如:ns1.aaa.com IP地址填寫你的VPS地址 如:1.1.1.1 填寫解析記錄,一個A記錄、一個NS記錄 NS記錄就是*.域名指向記錄值ns1.域名 如:*.aaa…

服務器的遠程桌面無法連接,服務器遠程桌面無法連接問題處理教程

服務器的遠程桌面無法連接,服務器遠程桌面無法連接問題處理教程。 一、問題概述 服務器遠程桌面無法連接是日常運維中常見的問題之一。它可能由多種原因造成,如網絡問題、服務器配置錯誤、遠程桌面服務未啟動等。本教程將指導您逐步排查并解決這些問題。…

計算機算法中的數字表示法——原碼、反碼、補碼

目錄 1.前言2.研究數字表示法的意義3.數字表示法3.1 無符號整數3.2 有符號數值3.3 二進制補碼(Twos Complement, 2C)3.4 二進制反碼(也稱作 1 的補碼, Ones Complement, 1C)3.5 減 1 表示法(Diminished one System, D1)3.6 原碼、反碼、補碼總結 1.前言 昨天有粉絲讓我講解下定…

手推車式電纜故障定位系統

武漢凱迪正大一體化電纜故障高壓發生器用于測試各種型號的380V,600V,10kV,35kV,110kV,220kV,380kV電壓等級的銅鋁芯電力電纜、同軸通信電纜和市話電纜的各類故障,如電纜全長、開路、短路、斷線、低阻故障、高阻故障、高阻泄露、高低阻抗接地、接地故障、鎧裝接地故障…

工控一體機7寸顯示器電容觸摸屏(YR07JK)產品規格說明書

如果您對工控一體機有任何疑問或需求,或者對如何集成工控一體機到您的業務感興趣,可移步控芯捷科技。 一、硬件功能介紹 1.1 YR07JK介紹 YR07JK工控機是我公司推出的一款新型 Cortex-A17 架構,主頻達1.8GHz、具有高性能低能耗的工業控制板卡…

甩掉接口文檔煩惱!Spring Boot 集成 Knife4j,輕松玩轉 API 可視化

一、引言:跟接口文檔說拜拜 👋 作為一名 Java 開發者,你是否還在為編寫繁瑣的 API 文檔而頭疼?傳統的手動編寫方式不僅耗時費力,而且容易出錯,難以維護。今天,我們就來介紹一款神器 Knife4j&am…

win10雙網卡如何同時上內網和外網?

win10雙網卡如何同時上內網和外網? Chapter1 win10雙網卡如何同時上內網和外網?Chapter2 網絡基礎--win10雙網卡設置成訪問不同的網絡 Chapter1 win10雙網卡如何同時上內網和外網? 原文鏈接:https://www.jb51.net/os/win10/806585.html 場景:很多辦…

【計算機畢業設計】388微信小程序足球賽事及隊伍管理系統

🙊作者簡介:擁有多年開發工作經驗,分享技術代碼幫助學生學習,獨立完成自己的項目或者畢業設計。 代碼可以私聊博主獲取。🌹贈送計算機畢業設計600個選題excel文件,幫助大學選題。贈送開題報告模板&#xff…

QT7_視頻知識點筆記_67_項目練習(頁面以及對話框的切換,自定義數據類型,DB數據庫類的自定義及使用)

視頻項目:7----汽車銷售管理系統(登錄,品牌車管理,新車入庫,銷售統計圖表)-----項目視頻沒有,代碼也不全,更改項目練習:學生信息管理系統。 學生信息管理系統&#xff1…

大模型助力企業提效,九章云極DataCanvas公司聯合騰訊搜狗輸入法發布私有化解決方案

近日,九章云極DataCanvas公司與騰訊搜狗輸入法的合作再次升級。在搜狗輸入法開發者中心正式推出之際,九章云極DataCanvas公司作為搜狗輸入法的首批開發合作伙伴,雙方聯合發布“企業知識管理助手”私有化解決方案。 “企業知識管理助手”整體私…

Facebook的魅力:數字時代的社交熱點

在當今數字化時代,社交媒體已經成為人們日常生活中不可或缺的一部分,而Facebook作為其中的巨頭,一直以其獨特的魅力吸引著全球數十億用戶。本文將深入探討Facebook的魅力所在,以及它在數字時代的社交熱點。 1. 社交網絡的霸主&…