Linux文件三劍客sed命令用法詳解

sed是一種流編輯器,它是文本處理中非常強大的工具,能夠完美的配合正則表達式使用,用法簡單實用,非常靈活。
??????? 工作原理:sed命令處理文本時,把當前處理的行存儲在一個臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。

在sed高級編輯命令中,還會調用另一個臨時緩沖區,稱為“保持空間”(hold space),在模式空間中為處理完的行可以臨時存儲在保持空間中,在臨時空間接著處理下一行,然后在將保持空間中的行重新存儲在臨時空間中做后續處理,這樣就使得sed命令變的功能得更為強大。

sed命令不僅可以查看,篩選文本內容,還可以對一個或多個文本進行編輯,更改,簡化對文件的反復操作。Linux文件三劍客sed命令用法詳解

??????? sed中有自己的腳本命令,配合這些腳本文件,sed可以實現許多對文本的索引,編輯功能。

sed命令常用選項:sed [option] ‘script’ file

option:

-n :不輸出模式空間內容到屏幕,即不自動打印
    -e :多點編輯
    -f :/ PATH/SCRIPT_FILE :  從指定文件中讀取編輯腳本
    -r :支持使用擴展正則表達式
    -i : 修改源文件
    -i.bak : 備份文件并原處編輯
    -v : 打印版本和版權信息。

script:’地址+命令’

地址:

  1. )沒有地址:默認對全文進行處理。
  2. )單地址:
    X:指定的行
    /pattern/:被匹配到的每一行
  3. )地址范圍:
    X1,X2 : 選取第 X1 行到 X2 行之間的行
    X1,+X2 : 選取第 X1 行之后的 X2 個行
    /pat1/,/pat2/ : 選取 pat1 第一次匹配到的行到 pat2 第一次匹配到的行之間的行
    X,/pat1/ : 選取 X 第一次匹配到的行到 pat1 第一次匹配到的行
  4. )X1~X2 : 步進
    1~2 : 從1開始,步進為2(奇數行)
    2~2 : 從2開始,步進為2(偶數行)

命令:

d : 刪除模式空間匹配的行,并立即啟用下一輪循環
    p : 打印當前模式空間內容,追加到默認輸出之后
    a [\]text : 在指定行后面追加文本。支持使用\n 實現多行追加
    i [\]text : 在行前面插入文本
    c [\]text : 替換行為單行或多行文本
    w : 保存模式匹配的行至指定文件
    r : 讀取指定文件的文本至模式空間中匹配到的行后
    = : 為模式空間中的行打印行號
    ! : 模式空間中匹配行取反處理
    s/X/X/g : 查找替換, 支持使用其它分隔符,s@@@ ,s###
    y/XX/XX/ : 檢索所有匹配的項,替換為對應的字符

高級編輯命令:

P : 打印模式空間開端至\n 內容,并追加到默認輸出之前
    h : 把模式空間中的內容覆蓋至保持空間中
    H : 把模式空間中的內容追加至保持空間中
    g : 從保持空間取出數據覆蓋至模式空間
    G : 從保持空間取出內容追加至模式空間
    x : 把模式空間中的內容與保持空間中的內容進行互換
    n : 讀取匹配到的行的下一行覆蓋至模式空間
    N : 讀取匹配到的行的下一行追加至模式空間
    d : 刪除模式空間中的行
    D : 如果模式空間包含換行符,則刪除直到第一個換行符的模式空間中的文本
    # : 把注釋擴展到下一個換行符以前。

案列

基本用法:

首先我們自己創建了一個方便查看效果的文件newf
Linux文件三劍客sed命令用法詳解

 

基本篩選功能:

  1. 打印一到3行
    Linux文件三劍客sed命令用法詳解
  2. 查看文件帶有b的行到帶有a的行
    Linux文件三劍客sed命令用法詳解
  3. 打印奇數行
    Linux文件三劍客sed命令用法詳解
  4. 打印帶有字母a或帶有字母b的行
    Linux文件三劍客sed命令用法詳解
  5. 把所有b,c都換成a
    Linux文件三劍客sed命令用法詳解
    如果不帶g 每行只會替換第一個(默認)匹配到的字符
    g可以換成數字,表示替換匹配到的第幾個字符
    可以將字符替換為 空 表示刪除
  6. 在第3行前一行插入字符
    Linux文件三劍客sed命令用法詳解
  7. 在第3行后插入字符
    Linux文件三劍客sed命令用法詳解
  8. 將每行第二個字符刪除
    Linux文件三劍客sed命令用法詳解
    如圖所示,所有的空格被刪掉。-r選項支持擴展正則表達式(相當于sed ‘s/^\(.\)\(.\)/\1/’)另一種方式sed ‘/.//2’ newfsed ”
  9. 把所有abc替換為ABC
    Linux文件三劍客sed命令用法詳解
    -y選項是把前面匹配的項全部對應替換為后面的字符

進階用法:

  1. 將1行放到3行后面
    Linux文件三劍客sed命令用法詳解
    h:將模式空間的內容覆蓋保持空間中
    G:將保持空間內容追加到模式空間中
  2. 在每行后面添加1個空行
    Linux文件三劍客sed命令用法詳解
    保持空間默認有一個空白行
  3. 把1到4行放在5行后面
    Linux文件三劍客sed命令用法詳解
    1h:覆蓋掉保持空間中的空白行
    1,4d:刪除最前面的4行
  4. 將第1行替換到第3行
    Linux文件三劍客sed命令用法詳解

 

總結:通過一些簡單的例子,可以看出sed命令簡單,但是功能復雜多樣,需要通過大量的練習才能熟練掌握。sed命令在運用中十分重要,它可以批量搜索,顯示,修改文本內容,這是必須要學會,并熟練使用的工具。

原創文章,作者:kstg5663294,如若轉載,請注明出處:http://www.www58058.com/78465

(6)
kstg5663294kstg5663294
上一篇 2017-06-24 16:08
下一篇 2017-06-24 17:28

相關推薦

  • HA Cluste 的配置:keepalived:vrrp協議 雙主模型

    keepalived:vrrp協議 雙主模型 第一步配置出始環境: 準備兩節點: 主節點:172.18.57.7 long1 備節點:172.18.57.8 long2 (1) 各節點時間必須同步; 同步時間: ~]# yum -y install chrony ~]# vim /etc/chrony.conf ~]# systemctl start chr…

    Linux干貨 2017-05-15
  • Hadoop HDFS分布式文件系統設計要點與架構

    Hadoop簡介:一個分布式系統基礎架構,由Apache基金會開發。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力高速運算和存儲。Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有著高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件…

    Linux干貨 2015-04-13
  • 第十周:Linux系統啟動流程及shell腳本練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 一張圖足以說明一切: 2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;   (1) 為硬盤新建兩個主分區;并為其安裝grub;   (2) 為硬盤的第一個主分區提供內核和ramdisk文件;為第二個分區提供rootfs;   (3)…

    Linux干貨 2016-11-30
  • LVM基本原理及使用

    LVM簡介 LVM全稱Logical Volume Manager(邏輯卷管理),是將幾個物理分區(或硬盤)通過軟件組合成一塊看起來是獨立大硬盤(VG),然后對這塊大硬盤分割成可使用的邏輯卷(LV),最終能夠掛載使用,以達到對磁盤空間進行彈性管理的目的。 LVM的基本原理 基本術語 dm(device mapper):將一個或多個底層塊設備組織成一個邏輯設備…

    Linux干貨 2016-04-17
  • linux系統文件的元數據

    linux系統文件的元數據 什么是元數據 文件的數據分兩種: 一種元數據,既屬性數據:metadata 一種就是數據本身:data 如何查看元數據: stat stat命令用于顯示文件的狀態信息 [root@localhost ~]# stat /tmp/mylinux File: ‘/tmp/mylinux’ Size: 143 Blocks: 0 IO …

    Linux干貨 2018-03-11
  • 第二周作業

    1 linux 常見的文件管理命令都有哪些?其常用的使用方法。 ls 文件列出命令   常見選項  -l 顯示長文本信息          -d 顯示當前目錄信息          -a 顯示所有文件信息     &nb…

    Linux干貨 2016-09-26
欧美性久久久久