Linux文本三劍客之sed

set的定義:

sed是一種流編輯器,流編輯器會在編輯器處理數據之前基于預先提供的一組規則來編輯數據流。
sed編輯器可以根據命令來處理數據流中的數據,這些命令要么從命令行中輸入,要么存儲在一個命令文本文件中。
sed的執行過程:
讀取 ?目標文件 的每行數據依次加入到緩沖區(模式空間)里,默認從第一行開始讀取
執行 ?使用定義的增刪改查命令來處理讀取到緩沖區行數據
顯示 ?將處理后的行數據輸出到屏幕顯示

命令格式:

案例:打印cat.txt 文件的內容

1.sed -選項 ‘操作’ 文件名1 文件名2 ...

2.sed? ?-n? '{

}'? 文件名

選項:

-e :表示用指定命令來處理輸入的文本文件,只有一個操作命令時可省略,執行多個操作命令要多幾個e的使用
?-f :表示用指定的腳本文件來處理輸入的文本文件。
-h 或--help:顯示幫助。
-n? ?--quiet 或 silent:禁止sed編輯器輸出,但可以與p命令一起使用完成輸出。
-i:直接修改目標文本文件。

常用操作:

s:替換,替換指定字符。
d:刪除,刪除選定的行。
a:增加,在當前行下面增加一行指定內容。
i:插入,在選定行上面插入一行指定內容。
c:替換,將選定行替換為指定內容。
y:字符轉換,轉換前后的字符長度必須相同。
p:打印,如果同時指定行,表示打印指定行;如果不指定行,則表示打印所有內容;如果有非打印字符,則以 ASCII 碼輸出。其通常與“-n”選項一起使用。
=:打印行號。
l(小寫L):打印數據流中的文本和不可打印的ASCII字符(比如結束符$、制表符\t)

常用操作演示:

一.打印內容? ?? p(打印行內容) ?=(打印行號) ? l(打印ASCII字符)

sed -n -e '行號區間p' ? ? ? ? ? ? ? ? ? ? ? #根據行號或行區間進行打印? ? 打印第一行內容

sed -n -e '/字符串/p' ? ? ? ? ? ? ? ? ? ? ? #根據字符串匹配行進行打印? ? 打印包括字符串e的行內容

sed -n -r -e '/正則表達式/p' ? ? ? ? ?#根據正則表達式匹配行進行打印? ?要使用擴展元字符要使用-r

? ? 打印以o為開頭的行內容

sed -n -e '1~2p' ? ? ? ? ? ? ? ? ? ? ? ?#從第一行開始每隔2行查看? ? ?

案例: 打印顯示奇數行和偶數行

二.刪除刪除 ? ?d

sed -e '行號區間d' 文件名? ? ? ? 刪除第一行行內容

sed -e '/字符串/d? ? ? ? ? ? ? ? 刪除空行內容

?????????

注意一下下面的案例

??
sed -r -e '/正則表達式/d'? ? ? 擴展元字符需要用 r? ? ? 刪除以o為開頭的字符

三.替換 ? ?s(字符串替換) ? ?c(整行內容替換) ? ? y(對應字符替換)?

s:字符串替換

sed -e '行號區間 s/old/new/g' ? ? ? ? ? sed -n -e '行號區間 s/old/new/gp' ? ?#打印被修改的行

?修改/etc/yum.conf 文件第一行到第12行 開頭+#?

sed -e '行號區間 s/old/new/gw 保存文件' ? ? #保存被修改的行

sed -e '/字符串/ s/old/new/g'? ? ? ? ? g的位置可以指定數字 代表修改第幾個sed -r -e '/正則表達式/ s/old/new/g'? ? ?擴展元字符需要加 -r
sed -r -e 's/(xxx)(xxx)(xxx)/\3\2\1/'? ? ? ?擴展元字符需要加 -r

c:整行內容替換

sed -e '行號c 新行內容'

sed -e '/字符串/c 新行內容'
?

y: 對應字符替換

sed -e 'y/舊字符/新字符/' ? ? ?#注:新字符和舊字符的長度要一致

四.插入:

?a(在指定行下面插入行內容)

sed -e '行號區間a 行內容'


sed -r -e '/字符串或正則/a 行內容'

?i(在指定行上面插入行內容)

sed -e '行號區間i 行內容'
sed -r -e '/字符串或正則/i 行內容'

r(在指定行下面插入整個文件內容)

五.復制粘貼 ? H(復制指定行到剪切板) ? ?G(將剪切板內容粘貼到指定行下面)

sed -e '1,3H;$G' ? ? ? ? ? #將1-3行內容復制粘貼到最后一行下面


sed -e '1,3{H;d};$G' ? ? ? #將1-3行內容剪切粘貼到最后一行下面

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

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

相關文章

Nextjs 動態路由獲取參數

目錄 一、創建page目錄下的路由文件 二、通過useRouter來獲取動態參數 先看官方文檔:Routing: Dynamic Routes | Next.js 使用Nextjs13版本參考官方文檔后實現仍有問題,網上的材料大多和官網一致,經過測試后,我找到了這個解決方…

【日記】今天好困(407 字)

正文 4T 硬盤降價了,好心動。雖然只降了 10 塊錢……. 為什么硬盤這么貴啊!哼。 柜面上雜事好多。雖然一天到晚見不到幾個客戶,但雜事就是很多。一個頭兩個大。也不知道從哪兒冒出來的這么多事。 芒果干到了!還沒去取,…

sql把一個表的某幾列的數據存到另一個表里

一.如何用slq語句把一個表中的某幾個字段的數據插入到另一個新表中,就要用下面這條slq語句: insert into 表名1(字段1,字段2) select 字段1,字段2 from 表名2 這里有一點值得注意的是這2個字段要一一對應,并且按順序。 二.如果另一個表是…

JAVASE之類和對象(1)

路雖遠,行則將至;事雖難,做則必成。 主頁:趨早——Step 專欄:JAVASE gitte:https://gitee.com/good-thg 引言: 這篇文章我們只介紹前半部分,下一篇文章會介紹剩下的部分。 目錄 一、…

LeetCode 面試150

最近準備面試,我以前不愿意面對的 現在保持一顆本心,就是專注于算法思想,語言基礎的磨煉; 不為速成,不急功近利的想要比賽,或者為了面試。 單純的本心,體驗算法帶來的快樂,是一件非常…

Python操作MySQL數據庫的工具--sqlalchemy

文章目錄 一、pymysql和sqlalchemy的區別二、sqlalchemy的詳細使用1.安裝庫2.核心思想3.整體思路4.sqlalchemy需要連接數據庫5.使用步驟1.手動提前創建數據庫2.使用代碼創建數據表3.用代碼操作數據表3.1 增加數據3.2 查詢數據3.3 刪除數據3.4 修改數據 一、pymysql和sqlalchemy…

2025秋招深度學習基礎面試題(一)

01. 卷積和BN如何融合提升推理速度 Conv和BN的融合:在網絡的推理階段,可以將BN層的運算融合到Conv層中,減少運算量,加速推理。本質上是修改了卷積核的參數,在不增加Conv層計算量的同時,略去了BN層的計算量。def fuse_conv_bn(conv, bn):std = (bn.running_var + bn.eps).…

數據倉庫、數據中臺、大數據平臺之間的關系

數據行業經常會出現數據倉庫、數據中臺、大數據平臺等概念,容易產生疑問,它們中間是相等,還是包含的關系? 數據中臺和數據倉庫概念的關系 數據中臺概念是包含數據倉庫的,數據倉庫是數據中臺中的一部分,包含…

探索Facebook:數字社交的新時代

Facebook,作為全球最大的社交網絡平臺之一,一直在引領著數字社交的發展潮流。隨著科技的不斷進步和社會的不斷變遷,Facebook也在不斷演進和創新,迎接著數字社交的新時代。本文將探索Facebook在數字社交領域的新發展,以…

Behind the Code:Polkadot 如何重塑 Web3 未來

2024 年 5 月 17 日 Polkadot 生態 Behind the Code 第二季第一集 《創造 Web3 的未來》正式上線。第一集深入探討了 Polkadot 和 Web3 技術在解決數字身份、數據所有權和去中心化治理方面的巨大潛力。 🔍 查看完整視頻: https://youtu.be/_gP-M5nUidc?…

抖音視頻怎么去水印保存部分源碼|短視頻爬蟲提取收集下載工具

抖音視頻怎么去水印保存部分源碼|短視頻爬蟲提取收集下載工具 抖音視頻去水印保存部分源碼: 通過使用Python中的requests、re和os等庫,可以編寫如下代碼來實現抖音視頻去水印保存的功能。 短視頻爬蟲提取手機下載工具的使用方法: 該工具主…

BevDet-4d(2): 環境安裝及效果展示

1. 環境安裝 conda create -n bevdet python=3.8 conda activate bevdet ? # 3 虛擬環境bevdet中安裝torch pip install spconv pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch

【數理統計02】延森Jensen‘s不等式的證明

延森不等式(Jensen’s Inequality)是凸函數理論中的一個重要結果,廣泛應用于概率論、統計學和優化理論等領域。這個不等式的基本形式是: 對于一個凸函數 f f f和一個隨機變量 X X X,如果 E [ X ] \mathbb{E}[X] E[X]存…

安科瑞為河南省促進分布式光伏發電健康持續發展提供解決方案

1 光伏、儲能運維市場分析 在光伏、儲能行業飛速發展的同時,已建的光伏、風力發電站和儲能系統的監控、運維管理項目的招標也非常多,2023年上半年,光伏電站開發企業運維招標規模28.6GW,同比增長204.3%,上述28.6GW招標…

Blender導出fbx模型,導入到ue5中模型丟失紋理材質

UE5系列文章目錄 文章目錄 UE5系列文章目錄前言一、問題原因二、最終效果 前言 Blender導出fbx模型,導入到ue5中,發現模型丟失紋理材質,里面的原神人物模型妮露居然是白模,郁悶了大半天 一、問題原因 我在Blender導出fbx文件時…

【Python】全局變量與init的區別

一個腳本里,設置全局變量,和初始化類時__init__中加載,有什么區別? 在Python腳本中,使用全局變量和在類的__init__方法中加載數據有幾個關鍵區別: 作用域: 全局變量:全局變量在整個…

C中十進制轉十六進制示例

uint8_t QR_code_RxBfr[255]{0}; uint8_t TouchCode[100];memcpy (&Sys.TouchCode[0], &QR_code_RxBfr[0], Sys.QR_code_Len);Str &Sys.TouchCode[TmpVble];Sys.Card_ID 0; while(0 ! isdigit(*Str)){Sys.Card_ID Sys.Card_ID*10 *Str - 0;Str;} 最后在通過以下…

嵌入式科普(18)Ubuntu在移動硬盤的安裝和啟動

目錄 一、概述 二、應用場景 三、移動硬盤安裝Ubuntu 3.1 移動硬盤格式化 3.2 VMware安裝Ubuntu到移動硬盤 四、電腦BIOS啟動移動硬盤Ubuntu 五、從VMware啟動移動硬盤Ubuntu 六、問題解決(坑)和思考提問 嵌入式科普(18)Ubuntu在移動硬盤的安裝和啟動 一、概述 在移動硬…

在R中贊揚下努力工作的你,獎勵一份CheetShet

傳說有個R,R里有個包,包的名字叫praise,會一直不停地夸贊你。 > praise() [1] "You are sensational!" > praise() [1] "You are luminous!" > praise() [1] "You are pioneering!" > praise() […

P1【知識點】【數據結構】【鏈表LinkedList】C++版

鏈表是一種邏輯上連續,內存上分散的線性表數據結構,是用一組任意的空間(可以連續,也可以不連續)來存放數據元素。每個數據元素成為一個”結點“,每個結點由數據域和指針域組成。 訪問元素(Acce…