sed編程入門

一.sed是啥

sed流編輯器,Stream Editor)是 Unix/Linux 系統中強大的文本處理工具,常用于對文本進行替換、刪除、插入、追加等操作。它逐行處理輸入文本,并根據提供的腳本命令修改文本,最后輸出結果。

二.基本操作

1.修改操作

(1)對整個文本進行修改

sed "s/-year/years" people.txt

?

(2)對文本指定行號進行修改

sed "2s/-year/years/" people.txt 

(3)對2到5行進行修改

sed "2,5s/-year/years/" people.txt 

?

(4)直接對原文進行修改加上-i

sed "2,5s/-year/years/" people.txt -i

(5)替換每一行中的所有的小寫 s 成大寫 S:

sed "s/s/S/g" people.txt

注意:g 的意思是一行中所有的匹配項,否則缺省只會匹配第一個 s

(6)替換每一行中的第 2 個小寫 s 成大寫 1:

sed "s/s/1/2" people.txt

?

(7)替換每一行中的第 2 個以后的小寫 s 成大寫 1:

sed "s/s/1/2g" people.txt 

2.多個匹配

(1)將 "-year" 改成 "years",并且將第 3 行以后的最后一個任意字符去掉:

?

在?sed?命令里,3,$s/.$//?是一段用于文本處理的規則,下面這就拆分成幾個部分,給你詳細講講每個符號的含義:

1. 行范圍:3,$

  • 3?代表第 3 行$?在?sed?里是一個特殊符號,專門用來表示最后一行
  • 把它們用?,?連起來?3,$,整體的意思就是?“從第 3 行開始,一直到文件的最后一行”?。也就是說,下面的替換操作(s/.$//)會作用在這個范圍內的每一行文本上。

2. 替換語法:s/原內容/新內容/

這是?sed?里最常用的替換操作格式s?就是 “substitute(替換)” 的意思,整個結構就是告訴?sed?:找到 “原內容”,把它換成 “新內容” 。

3. 匹配規則:.$

  • .?是正則表達式里的元字符,代表任意一個單個字符(像字母、數字、標點符號這些,除了換行符一般都能匹配)。
  • $?前面講過,是行尾的意思。把它們放一起?.$?,就是說要匹配行末尾的那一個任意字符?。打個比方,要是一行文本是?abcde.?,那這里的?.(行末尾的那個點)就會被?.$?匹配到;要是文本是?abcde?,那最后一個字符?e?會被匹配。

4. 替換為空://

sed?替換語法里,/?是用來分隔 “原內容” 和 “新內容” 的。這里 “新內容” 的位置是空的(兩個?/?緊挨著),意思就是把前面?.$?匹配到的內容(行末尾最后一個字符 )替換成空字符串,說白了就是把行末尾最后一個字符刪掉 。

?注意:

*在單引號里面,元義字符可以直接使用,如果要去掉元義則要在前面加 \;在雙引號里面,sed 的命令要使用元義,則需要加 \,而命令的正則表達式要使用元義直接使用就行。

*在?sed?命令中,-e?選項用于指定多個編輯命令,允許在一次?sed?執行中組合多個操作。

(2)將 & 代替被匹配的變量:

sed -e "s/iS/[$]/" people.txt 

將文本中每一行出現的第一個 is 的左右兩邊加上 [ ]

(3)在指定行的前面插入 (i) 或者后面插入 (a) 一些信息:


sed ’3i abcd’ people.txt 意思是 ==> 在第 3 行的前面插入 abcd
sed ’2a abcd’ people.txt 意思是 ==> 在第 2 行的后面插入 abcd
sed ’1,4a abcd’ people.txt 意思是 ==> 在第 1 至 4 行的后面分別插入 abcd
sed ’/US/a abcd’ people.txt 意思是 ==> 在匹配 US 的行的后面插入 abcd

(4)將指定的行替換成其他信息:


sed "2c ok" people.txt 意思是 ==> 將第 2 行替換成 ok

(5)將指定的行刪除掉:


sed ‘2d’ people.txt 意思是 ==> 將第 2 行給刪掉
sed ‘/US/d’ people.txt 意思是 ==> 將匹配 / US / 的所有行給刪掉
sed ’/<he>/d’ people.txt 意思是 ==> 將匹 配 he 的所有行給刪掉,注意:之所以要用 <> 將 he 給括起來,是因為不想匹配 she,當然,<> 需要轉義,寫成 <>

(6)打印指定匹配的行,用命令 p:


sed ’/Chen/p’ people.txt -n 意思是 ==> 打印匹配 Chen 的行
sed ’/Chen/, /Lau/p’ people.txt -n 意思是 ==> 打印匹配 Chen 或者 Lau 的行
sed ’3,/UK/p’ people.txt -n 意思是 ==> 從第 3 行開始打印,直到匹配 UK 為止
sed ’/UK/,6p’ people.txt -n 意思是 ==> 從匹配 UK 的行開始打印,直到第 6 行為止

3.總結:

3.5? ? ? ? 3代表開始5代表結束

&? ? ? ? ? ?代表he匹配的字符串

/A/? ? ? ? ? A為需要匹配的字符串

//? ? ? ? ? ? 清空

s/A/a/? ? ?替換

i? ? ? ? ? ? ? 前面插入

a? ? ? ? ? ? ?后面插入

d? ? ? ? ? ? ?刪除

p? ? ? ? ? ? ?打印

在正則表達式中? ? ? <>? ? ? ? |? ? ? ? {}? ? ? ? ()? ? ? ? +若是單引號不需要加上\,雙引號需要加上\

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

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

相關文章

知識速查大全:python面向對象基礎

目錄 一、面向對象的基本概念 二、類和對象 1.類 2.對象 三、屬性&#xff08;數據&#xff09;和方法 1.數據 1.1.實例數據 1.2.類數據 2.方法 2.1.實例方法 2.2.類方法 3.數據和方法的綜合使用 四、面向對象三大特性 1.封裝 2.繼承 2.1.單繼承 2.2.多繼承 2.3.混合類 2.4.方法…

Linux系統編程Day1-- 免費云服務器獲取以及登錄操作

一、 學生黨如何“白嫖”或免費使用云服務器&#xff1f; 作為學生黨&#xff0c;資金有限的情況下確實不容易長期負擔服務器費用。但好消息是&#xff0c;有多種方式可以“白嫖”或低成本使用云服務器&#xff0c;尤其是針對學生身份、學習用途和開發者計劃。 1、使用各大云平…

15.11 單卡訓練770M參數模型!DeepSpeed ZeRO-3實戰:RTX 4090顯存直降6.8GB

單卡訓練770M參數模型!DeepSpeed ZeRO-3實戰:RTX 4090顯存直降6.8GB 實戰 DeepSpeed ZeRO-2 和 ZeRO-3 單機單卡訓練 為什么需要單機單卡訓練場景? 雖然 DeepSpeed 的 ZeRO 技術主要面向分布式訓練場景,但單機單卡訓練仍然具有重要實踐價值: 開發調試:在資源有限情況下…

HTTPS基本工作過程:基本加密過程

HTTPS基本工作過程&#xff1a;HTTPS只是HTTP的基礎上引入加密機制1.引入對稱加密首先&#xff0c;什么是對稱加密和非對稱加密&#xff1f;對稱加密&#xff1a;使用同一把密鑰加密解密非對稱加密&#xff1a;有兩把密鑰&#xff0c;為公鑰&#xff08;公開的&#xff09;和私…

ES 文件瀏覽器:多功能文件管理與傳輸利器

ES 文件瀏覽器是一款功能強大的文件管理器軟件&#xff0c;支持多種文件傳輸協議&#xff0c;能夠方便地管理手機、平板電腦和電腦中的文件。它不僅提供了豐富的文件管理功能&#xff0c;還支持多種設備之間的文件傳輸&#xff0c;滿足用戶在不同場景下的需求。 核心功能 1. 文…

github-idea新建文件就要彈窗提醒-如何關閉-2025.7.30

打開設置 進入 File&#xff08;文件&#xff09; > Settings&#xff08;設置&#xff09;。 導航到版本控制設置&#xff1a; 在左側導航欄中&#xff0c;展開 Version Control&#xff08;版本控制&#xff09;。 選擇 Confirmation&#xff08;確認&#xff09;。修改文…

滾珠導軌在電子制造中的流暢性優勢

在電子元件微米級精度要求的搬運與裝配環節&#xff0c;傳統導軌易因摩擦、磨損導致定位偏差或設備抖動。而滾珠導軌憑借滾動摩擦設計&#xff0c;將滑動阻力降低80%以上&#xff0c;成為高精度電子制造設備的首選傳動部件。微米級精度&#xff1a;在貼片機中&#xff0c;滾珠導…

數據結構——單鏈表1

1. 單鏈表1.1 概念與結構概念&#xff1a;鏈表是一種物理存儲結構上非連續、非順序的存儲結構&#xff0c;數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。1.1.1 結點與順序表不同的是&#xff0c;鏈表里的每節都是獨立申請下來的空間&#xff0c;我們稱之為“節點/結點…

STM32CubeMX + HAL庫:基于DHT11溫濕度監測實現

1. 概述1.1 實驗目的本實驗旨在利用 DHT11 溫濕度傳感器&#xff0c;每隔 5 秒采集一次環境的溫度與濕度數據&#xff0c;并通過串口將數據循環打印輸出。所使用的 DHT11 模塊硬件結構簡單&#xff0c;包含三個接口引腳&#xff1a;電源正極&#xff08;VCC&#xff09;、電源負…

常見排序的特性總結

目錄 1.排序的穩定性 2.直接插入排序的特性總結 3.希爾排序的特性總結 4.直接選擇排序的特性總結 5.堆排序的特性總結 6.冒泡排序的特性總結 7.快速排序的特性總結 8.歸并排序的特性總結 9.計數排序的特性總結 10.總結 1.排序的穩定性 排序的穩定性是說 相同大小的元…

【硬件-筆試面試題】硬件/電子工程師,筆試面試題-49,(知識點:OSI模型,物理層、數據鏈路層、網絡層)

目錄 1、題目 2、解答 OSI 七層模型的分層及功能&#xff08;從下到上&#xff09; 1. 物理層&#xff08;Physical Layer&#xff09; &#xff1a;網卡的物理接口、網線、光纖、集線器 2. 數據鏈路層&#xff08;Data Link Layer&#xff09;&#xff1a;交換機&#xf…

R 環境安裝指南

R 環境安裝指南 引言 R 是一種針對統計計算和圖形表示的編程語言和軟件環境。它廣泛應用于數據分析和統計建模領域。本指南旨在為用戶提供一個清晰、詳細的 R 環境安裝步驟,確保用戶能夠順利地開始使用 R 進行數據分析。 安裝前的準備 在開始安裝 R 之前,請確保您的計算機…

Cesium entity跟隨第一人稱視角

1.跟隨視角let firstView:any; const firstPerspective (entity: any) > {firstView () > {let curTime window.viewer.clock.currentTime;const pos entity.position.getValue(curTime);const orientation entity.orientation.getValue(curTime);if (pos &&…

傳輸層協議UDP與TCP

目錄 一. UDP 1.1 UDP協議段格式 1.2 UDP傳輸的特點 1.3 面向數據報 1.4 UDP緩沖區 1.5 報文的理解 二. TCP 2.1 TCP協議段格式 2.2 確認應答機制&#xff08;ACK&#xff09; 2.3 超時重傳機制 2.4 連接管理機制 為什么要三次握手&#xff1f; 三次&#xff1f;四…

SringBoot入門

文章目錄SpringBoot入門一、關于&#xff1a;約定大于配置二、創建SpringBoot項目---起步案例創建SpringBoot項目案例創建項目方式2&#xff1a;通過aliyun網站創建創建項目方式3---基于官方地址創建三、配置項目項目結構自定義配置四、SpringBoot原理&#xff08;重點&#xf…

ansible 版本升級

1. 服務器上查看對應ansible 可安裝的版本 yum info ansible 對比官網,服務器對應ansible 版本比較地址,不利于了解新版本的屬性。 2. 升級比較新的ansible 版本,安裝epel-release wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm rpm -iv…

企業微信API接口發消息實戰:從0到1的技術突破之旅

摘要&#xff1a;本文詳細介紹了通過企業微信官方API接口實現消息發送功能的完整實戰流程。首先闡述了企業微信API在數字化辦公中的重要性&#xff0c;重點講解了消息發送接口的應用場景。實戰部分分為前期準備、開發環境搭建和具體實現三個環節&#xff0c;包括創建企業微信應…

Linux的小程序——進度條

為了寫出這個小程序我們先來了解幾個知識點(一)回車和換行先以寫作文為例子了解一下&#xff0c;當在一行中寫了一半&#xff0c;由此處位置往下一行的操作叫做換行&#xff0c;回到該行的開頭位置為回車。而在c語言中\n幫我們完成了換行和回車兩個動作&#xff0c;那單純回車是…

在macOS上使用VS Code和Clang配置C++開發環境

本文基于VS Code官方文檔&#xff0c;詳細介紹如何在macOS系統下配置Clang/LLVM編譯器與VS Code的C開發環境。通過本文&#xff0c;你將學會如何搭建開發環境、創建并調試C程序&#xff0c;適合C初學者和需要在macOS上進行C開發的開發者。 前提條件 在開始配置前&#xff0c;…

Ganttable 基于工時的進度分析

時間進度分析是 Ganttable 提供的高級進度管理功能&#xff0c;它基于實際工作時長&#xff0c;結合計劃預估工時&#xff0c;可精準計算項目及任務的完成度。開啟進度分析開啟進度分析功能的操作如下&#xff1a;在時間管理頁面&#xff0c;點擊右上角的 “設置” 按鈕&#x…