Shell三劍客之sed

前言:

? ? ? ?Shell三劍客是grep、sed和awk三個工具的簡稱,因功能強大,使用方便且使用頻率高,因此被戲稱為三劍客,熟練使用這三個工具可以極大地提升運維效率。

? ? ? ?sed是一個流編輯器,用于對文本進行編輯、替換、刪除等操作。sed通過讀取、執行和顯示三個過程來工作,可以在無交互的情況下實現復雜的文本處理操作。

一、sed命令參數描述

1.sed命令選項

-n 不打印所有行到標準輸出
-e 表示將下一個字符串解析為sed命令,如果只傳遞一個編輯命令給sed,-e選項可以省略
-f 表示正在調用sed腳本文件

2.sed命令定位文本的方法

x                    x為指定行號
x,y                  指定從x到y的行號范圍
/pattern/            查詢包含模式的行
/pattern/pattern/    查詢包含兩個模式的行
/pattern/,x          從與pattern的匹配行到x號行之間的行
x,/pattern/          從x號行到與patter匹配的行之間的行
x,y!                 查詢不包括x和y行號的行

3.sed編輯命令?

p   打印匹配行
=   打印文件行號
a\  在定位行號之后追加文本信息
i\  在定位行號之前插入文本信息
d   刪除定位行
c\  用新文本替換定位文本
s   使用替換模式替換相應模式
r   從另一個文件中讀文本
w   將文本寫入到一個文件
y   變換字符
q   第一個模式匹配完成后推出
l   顯示與八進制ACSII碼等價的控制字符
{}  在定位行執行的命令組
n   讀取下一個輸入行,用下一個命令處理新的行
h   將模式緩沖區的文本復制到保持緩沖區
H   將模式緩沖區的文本追加到保持緩沖區
x   互換模式緩沖區和保持緩沖區的內容
g   將保持緩沖區的內容復制到模式緩沖區
G   將保持緩沖區的內容追加到模式緩沖區

二、sed應用舉例

1.sed命令選項舉例

sed編輯命令p實現打印匹配行,-n表示不打印所有行

#查看文件全部內容
[root@test02 ~]# cat a.txt 
#sfsd
fsjdf
fdfs#執行sed命令帶-n選項,只打印文本第一行
[root@test02 ~]# sed -n '1p' a.txt 
#sfsd#執行sed命令不帶-n選項,打印文本第一行和文本全部內容
[root@test02 ~]# sed '1p' a.txt    
#sfsd
#sfsd
fsjdf
fdfs#打印范圍行,1到2行
[root@test02 ~]# sed -n '1,2p' a.txt 
#sfsd
fsjdf#利用/pattern/進行模式匹配,且匹配是大小寫敏感的
[root@test02 ~]# sed -n '/fsjdf/p' a.txt    
fsjdf
[root@test02 ~]# sed -n '/sfsd/p' a.txt      
#sfsd

sed -e用法

#-e表示將下一個字符串解析為sed編輯命令,如果只傳遞一個編輯命令給sed,-e選項可以忽略。
#只有項sed傳遞多個編輯命令時,-e才有用武之地#打印行號命令
[root@test02 ~]# sed -n '/sfsd/=' a.txt  
1
[root@test02 ~]# sed -n '/fsjdf/=' a.txt  
2
#打印行的內容及行號
[root@test02 ~]# sed -n -e '/fsjdf/p' -e '/fsjdf/=' a.txt   
fsjdf
2

?sed -f選項

#-f選項只有調用sed腳本文件時才起作用,
#追加文本格式
#sed '指定地址a\追加文本' 操作文件[root@test02 ~]# cat append.sed 
#!/bin/sed -f
/my/a\
we append a new line#在my關鍵字這一行之后追加文本
[root@test02 ~]# ./append.sed a.txt 
#sfsd
what is your name
my name is Andy Law
we append a new line
zhen ta ma caodan!
fsjdf
fdfsaaaa

2.sed文本定位舉例

匹配元字符需使用轉義字符“\”

#匹配元字符
[root@test02 ~]# sed -n '/\!/p' a.txt 
zhen ta ma caodan!
#sed命令可以正則表達式可以匹配元字符,$正則中表示行尾,sed中表示最后一行,最后一行為空行
[root@test02 ~]# sed -n '$p' a.txt#打印1到2行之外的行
[root@test02 ~]# sed -n '1,2!p' a.txt   
my name is Andy Law
zhen ta ma caodan!
fsjdf
fdfs#打印匹配關鍵字my到最后一樣
[root@test02 ~]# sed -n '/my/,$p' a.txt     
my name is Andy Law
zhen ta ma caodan!
fsjdf
fdfsaaaa
#打印第2行到my關鍵字匹配的行
[root@test02 ~]# sed -n '2,/my/p' a.txt 
what is your name
my name is Andy Law

3.sed基本編輯命令舉例

插入命令i\

#sed編輯命令插入文本的符號為i\,插入文本的格式為:
sed '指定地址i\插入文本' 輸入文件[root@test02 ~]# cat insert.sed 
#!/bin/sed -f
/my/i\                          
we insert a new line            [root@test02 ~]# ./insert.sed a.txt 
#sfsd
what is your name
we insert a new line
my name is Andy Law
zhen ta ma caodan!
fsjdf
fdfsaaaa

修改文本 c\

#sed編輯命令的修改文本符號為c\,格式為:
sed '指定地址c\更換文本' 輸入文件[root@test02 ~]# cat modify.sed 
#!/bin/sed -f
/my/c\
we modify this line
[root@test02 ~]# ./modify.sed a.txt 
#sfsd
what is your name
we modify this line
zhen ta ma caodan!
fsjdf
fdfsaaaa

刪除文本d

#sed編輯命令刪除文本符號為d,格式為:
sed '指定地址d' 操作文件[root@test02 ~]# cat a.txt 
#sfsd
what is your name
my name is Andy Law
zhen ta ma caodan!
fsjdf
fdfsaaaa
[root@test02 ~]# sed '2d' a.txt 
#sfsd
my name is Andy Law
zhen ta ma caodan!
fsjdf
fdfsaaaa
#刪除最后一行
[root@test02 ~]# sed '$d' a.txt  
#sfsd
what is your name
my name is Andy Law
zhen ta ma caodan!
fsjdf
fdfs
#刪除5到最后一行
[root@test02 ~]# sed '5,$d' a.txt 
#sfsd
what is your name
my name is Andy Law
zhen ta ma caodan!

?替換文本s

#sed編輯命令替換文本的符號為s,格式為:
sed 's/被替換文本/新替換文本/[替換選項]' 輸入文本g          表示替換文本中所有出現被替換字符串之處
p          與-n選項結合,只打印替換行
w 文件名   表示將輸出定向到一個文件[root@test02 ~]# sed 's/my/your/' a.txt     
#sfsd
what is your name
your name is Andy Law
zhen ta ma caodan!
fsjdf
fdfsaaaa

寫入一個新的文件

#寫入文本符號w,格式為:
sed '指定地址 w 文件名' 操作文件#將a.txt文件1到3行生成新文件輸入到nuw.txt
[root@test02 ~]# sed -n '1,3 w new.txt' a.txt
[root@test02 ~]# cat new.txt 
#sfsd
what is your name
my name is Andy La[root@test02 ~]# sed -n '/my/ w new.txt' a.txt   
[root@test02 ~]# cat new.txt 
my name is Andy Law

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

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

相關文章

LeetCode2095刪除鏈表的中間節點

題目描述 給你一個鏈表的頭節點 head 。刪除 鏈表的 中間節點 ,并返回修改后的鏈表的頭節點 head 。長度為 n 鏈表的中間節點是從頭數起第 ?n / 2? 個節點(下標從 0 開始),其中 ?x? 表示小于或等于 x 的最大整數。對于 n 1、…

深入探索Android簽名機制:從v1到v3的演進之旅

引言 在Android開發的世界中,APK的簽名機制是確保應用安全性的關鍵環節。隨著技術的不斷進步,Android簽名機制也經歷了從v1到v3的演進。本文將帶你深入了解Android簽名機制的演變過程,揭示每個版本背后的技術細節,并探討它們對開…

淺談下MYSQL表設計的幾條規則

作為后端開發人員,避免不了和數據庫打交道,可是我們怎么能夠設計出高效,可維護,可擴展的數據庫設計呢,在這里我總結了幾個點,供大家參考。 在寫之前,可能需要重復下數據庫設計的范式原則&#…

docker-compose.yml文件詳解

創建 docker-compose.yml 文件是使用 Docker Compose 管理多容器應用的第一步。這個 YAML 格式的文件詳細描述了服務、網絡和卷等組件以及它們之間的關系。下面是對一個典型 docker-compose.yml 文件結構的詳解: 基本結構 一個基本的 docker-compose.yml 文件通常…

水雨情監測系統—實時監測水位信息

TH-SW3水雨情監測系統是一種專門用于實時監測和收集水文氣象數據的自動化系統。它能夠實時獲取區域內降雨和水情數據,并將其存儲到數據庫中進行分析處理,從而為防汛指揮人員提供及時準確的信息服務。 水雨情監測系統的主要功能包括實時監測水位、流速、流…

C++類與對象基礎探秘系列(二)

目錄 類的6個默認成員函數 構造函數 構造函數的概念 構造函數的特性 析構函數 析構函數的概念 析構函數的特性 拷貝構造函數 拷貝構造函數的概念 拷貝構造函數的特性 賦值運算符重載 運算符重載 賦值運算符重載 const成員 const修飾類的成員函數 取地址及const取地址操作…

MySQL文檔_下載

可能需要:MySQL下載–》更新版本–》遷移數據庫到MySQL 以下都不重要【只要確定好需要安裝版本,找到對應的版本下載,安裝,設置即可】 下載、安裝: Determine whether MySQL runs and is supported on your platform…

iCloud如何高效利用:提升蘋果生態體驗

iCloud如何高效利用:提升蘋果生態體驗 引言 iCloud是蘋果公司提供的云服務,它允許用戶在蘋果設備之間無縫同步數據和內容。隨著數字化生活的不斷發展,有效地管理和利用iCloud對于提高工作效率和生活質量變得越來越重要。本文將詳細介紹如何…

Debian12安裝后更換為國內鏡像源,切換root用戶,解決用戶名不在sudoers文件中此事將被報告

選擇Debian作為編程開發最佳Linux的理由: Debian是面向程序員的最古老,最出色的Linux發行版之一。Debian提供了具有.deb軟件包管理兼容性的超穩定發行版。Debian為程序員提供了許多最新功能。因此,它具有一個特殊的編程空間。Debian是開發人員…

彌合孤島:克服構建 DevOps 文化的挑戰

持續變革正在發生軟件開發行業。DevOps 因其對自動化、協作和持續改進的關注而成為優化軟件交付并彌合開發和運營團隊之間鴻溝的重要方法。然而,過渡到真正的 DevOps 文化并非沒有挑戰。本文探討了您在追求 DevOps 時可能面臨的障礙并提供了解決方案。 01 了解 Dev…

數據結構 順序表1

1. 何為順序表: 順序表是一種線性數據結構,是由一組地址連續的存儲單元依次存儲數據元素的結構,通常采用數組來實現。順序表的特點是可以隨機存取其中的任何一個元素,并且支持在任意位置上進行插入和刪除操作。在順序表中&#xf…

算法-卡爾曼濾波之基本數學的概念

1.均值 定義:均值是一組數據中所有數值的總和除以數據的數量。均值是數據的中心趨勢的一種度量,通常用符號 xˉ 表示。 :對于包含 n 個數據的數據集 {𝑥1,𝑥2,...,𝑥𝑛},均值 xˉ 計…

Spring原理

目錄 一、Bean作用域 1、Bean作用域概念 2、Bean的六種作用域 3、舉例演示bean的幾種作用域 二、Bean的生命周期 1、Bean對象的生命周期 2、演示Bean對象的生命周期 三、SpringBoot的自動配置 1、概念 2、spring將對象存入容器中的原理 一、Bean作用域 在前面spring…

C語言(指針)7

Hi~!這里是奮斗的小羊,很榮幸各位能閱讀我的文章,誠請評論指點,關注收藏,歡迎歡迎~~ 💥個人主頁:小羊在奮斗 💥所屬專欄:C語言 本系列文章為個人學習筆記&#x…

程序設計語言理論中的“類型系統”與“類型論”及其示例

程序設計語言理論中的“類型系統”與“類型論”及其示例 在程序設計語言理論中,“類型系統”和“類型論”是兩個核心概念。它們不僅關系到程序的安全性、可讀性和優化,還為新的編程范式和工具的開發提供了理論基礎。接下來,我們將通過簡單示…

6款日常精選手機APP推薦!

AI視頻生成:小說文案智能分鏡智能識別角色和場景批量Ai繪圖自動配音添加音樂一鍵合成視頻https://aitools.jurilu.com/ 1.全能相機軟件——無他相機 無他相機App是一款完全免費且功能全面的美顏相機軟件。這款相機應用集自拍、美顏、圖片編輯、風格化模板、流行貼…

springboot+vue+mybatis臺球俱樂部管理系統的設計與實現+PPT+論文+講解+售后

隨著信息技術在管理上越來越深入而廣泛的應用,作為一般的臺球廳都會跟上時代的變化,用上計算機來代表重復性的勞動,并且給用戶一種新奇的感受,實現臺球俱樂部系統 在技術上已成熟。本文介紹了臺球俱樂部系統 的開發全過程。通過分…

k8s v1.20二進制部署 部署 CNI 網絡組件 部署 Calico

一、部署 flannel 1.1.K8S 中 Pod 網絡通信 ●Pod 內容器與容器之間的通信 在同一個 Pod 內的容器(Pod 內的容器是不會跨宿主機的)共享同一個網絡命名空間,相當于它們在同一臺機器上一樣,可以用 localhost 地址訪問彼此的端口。…

InternLM-XComposer2-4KHD開拓性的4K高清視覺-語言模型

大型視覺-語言模型(LVLM)在圖像字幕和視覺問答(VQA)等任務中表現出色。然而,受限于分辨率,這些模型在處理包含細微視覺內容的圖像時面臨挑戰。 分辨率的限制嚴重阻礙了模型處理含有豐富細節的圖像的能力。…

springboot3.x集成Elasticsearch8.5.3

1. 前言 項目基礎為springboot3.0.2,目標是實現Elasticsearch的自定義高亮分頁查詢,網上提供的方法都是通過繼承ElasticsearchRepository實現相關的查詢,但是當我查詢條件過多且復雜的時候方法命名會非常長,所以暫時棄用&#xf…