sed命令簡介

来源:https://www.cnblogs.com/yukri/archive/2018/02/04/8413283.html
-Advertisement-
Play Games

sed 是一種流編輯器,一次處理一行內容,處理時,把當前處理的行存儲在臨時緩衝區,稱為模式空間,接著用sed命令處理模式空間中的內容,處理完成後,把緩衝區的內容送往屏幕。然後讀入下行,執行下一個迴圈。 用法:sed [option]... 'script' inputfile... # :指定某行, ...


sed

  是一種流編輯器,一次處理一行內容,處理時,把當前處理的行存儲在臨時緩衝區,稱為模式空間,接著用sed命令處理模式空間中的內容,處理完成後,把緩衝區的內容送往屏幕。然後讀入下行,執行下一個迴圈。

 

  用法:sed [option]... 'script' inputfile...

# :指定某行,否則全文
/pattern/:被此處模式所能夠匹配到的每一行
#,#:指定範圍
#,+#:指定#行至#+N行
/pat1/,/pat2/
#,/pat1/

常用選項:
  -n :不輸出模式空間內容到屏幕
  -e :多點編輯
  -f:/PATH/腳本文件 :從指定文件中讀取編輯腳本
  -i.bak :備份原文件並編輯
  -r :支持擴展正則表達式

d:刪除
  sed '/^$/d' :刪除空白行
  sed '1,10d' :刪除1-10行(多行參數之間可用-e多點編輯)

p:顯示模式空間中的內容
  sed -n '1~2p' file :僅顯示奇數行
  sed -n '2~2p' file :僅顯示偶數行

a [\]test :在指定行後追加文本,支持使用\n實現多行追加
  sed '/root/a\superman' /etc/passwd :在包含root的行後一行追加superman

i [\]text :在行前插入文本
  sed '/root/i\superman' /etc/passwd :在包含root的行前一行追加superman

c [\]text :替換行為單行或多行文本
  sed '/root/c\superman' /etc/passwd :把包含root的行整行內容都替換為superman

w /path/file : 保存模式匹配的行至指定文件

r /path/file :讀取指定文件的文本至模式空間中匹配到的行後

= :為模式空間中的行列印行號
sed -n -e '/^$/p' -e '/^$/=' file :顯示空白行並列印空白行行號

! :取反

s/// s@@@ s### :查找替換
g :行內全局替換
p :顯示替換成功的行
w /PATH/file :將替換成功的行保存至文件中

高級編輯命令
h:把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容追加至保持空間中
g:從保持空間取出數據覆蓋至模式空間
G:從保持空間取出內容追加至模式空間
x:把模式空間中的內容與保持空間中的內容進行互換
n:讀取匹配到的行的下一行覆蓋至模式空間
N:讀取匹配到的行的下一行追加至模式空間
d:刪除模式空間中的行
D:刪除多行模式空間中的所有行

示例:

1、刪除centos7系統/etc/grub2.cfg文件中所有以空白開頭的行行首的空白字元
sed /^[[:blank:]]/d' /etc/grub2.cfg

 

2、刪除/etc/fstab文件中所有以#開頭,後面至少跟一個空白字元的行的行首的#和空白字元
sed '/^#[[:blank:]]\+/d' /etc/fstab

 

3、在centos6系統/root/install.log每一行行首增加#號
sed -n 's/^/#&/p' /root/install.log

 

4、在/etc/fstab文件中不以#開頭的行的行首增加#號
sed 's/^[^#]/#&/' /etc/fstab

 

5、處理/etc/fstab路徑,使用sed命令取出其目錄名和基名
目錄名:echo /etc/fstab |sed 's@[^/]\+$@@'

基名:echo /etc/fstab |sed s'@.*/@@'

 

6、利用sed 取出ifconfig命令中本機的IPv4地址
ifconfig |sed -n '/inet addr/p' |sed 's/^[[:blank:]]*inet addr://' |cut -d' ' -f1

ifconfig |sed -n '2p' |tr -s ' ' : |cut -d: -f4

 

7、統計centos安裝光碟中Package目錄下的所有rpm文件的以.分隔倒數第二個欄位的重覆次數

mount /dev/cdrom /mnt |ls /mnt/Packages/ |sed s'/.rpm//' |sed s'@.*[/.]@@' |sort |uniq -c

 

8、統計/etc/init.d/functions文件中每個單詞的出現次數,併排序

sed s'/[^[:alpha:]]/\n/g' /etc/init.d/functions |sort |uniq -c |sed '1d'


9、將文本文件的n和n+1行合併為一行,n為奇數行
sed 'N;s/\n//'


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文基於初次或再次嘗試部署.Net Core應用到Linux伺服器上,我嘗試後自我總結的經驗一個簡單的Demo,嘗試部署在Linux伺服器上和跨伺服器訪問資料庫。 一、環境介紹 1、本地使用Visual Studio 2017開發,使用的.NetCore SDK版本為2.1.4; 2、資料庫使用的M ...
  • Quartz 是什麼? Quartz 是作業調度系統,可以集成進其他軟體系統。這裡【作業調度程式】一詞是指,在預定義時間執行(或通知)其他組件的系統。 Quartz 有什麼優點? 靈活,有多種使用方式,可混合使用 輕量,只需很少的配置 容錯性好 具有持久化功能,程式重啟時,可記住已計劃的任務 Qua ...
  • Entity Framework Codefirst的配置步驟: (1) 安裝命令: install-package entityframework (2) 創建實體類,註意virtual關鍵字在導航屬性中的用法 (3) 創建DbContext類,為每個entity set創建一個DbSet; 指定 ...
  • 1. 實現DataGrid column的顯示和隱藏功能; (1). 定義ContextMenu ,該ContextMenu僅可使用於DataGrid的DataGridColumnHeader; (2). 自定義顯示隱藏的制轉換器; 2. 在實現DataGridColumn Filter 功能時,可 ...
  • 本文目錄:1. Tomcat連接器協議類型2. Tomcat與httpd/nginx結合的方式3. Tomcat + nginx4. Tomcat + httpd(mod_jk) 4.1 編譯mod_jk模塊 4.2 配置httpd與tomcat的ajp連接 4.3 通過mod_jk負載均衡tomc ...
  • 簡介 IPC 主要有消息隊列、信號量和共用記憶體3種機制。和文件一樣,IPC 在使用前必須先創建,使用 ipcs 命令可以查看當前系統正在使用的 IPC 工具: 由以上可以看出,一個 IPC 至少包含 key值、ID值、擁有者、許可權和使用的大小等關鍵信息。如果需要手工刪除某個 IPC 機制,可以使用 ...
  • htpasswd用於為指定用戶生成基於網頁用戶身份認證的密碼,由httpd-tools軟體包提供。支持3種加密演算法:MD5、SHA和系統上的crypt()函數,不指定演算法時,預設為md5。 例如: (1).使用"-n"選項直接將結果輸出到標準輸出而不創建passwdfile。 (2).使用批處理模式 ...
  • 有些時候因為特殊需求,需要在已安裝的httpd上添加一些額外的模塊,這時候要使用httpd-devel中的apxs工具。要使用這個擴展機制,你的平臺必須支持DSO特性,即要求Apache httpd必須內建了mod_so模塊。 apxs添加模塊的方法很簡單,以下是幾個可能用上的選項。 -c mod_ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...