亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

Linux基礎(chǔ)教程之文件三劍客sed命令用法詳解

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

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

sed命令不僅可以查看,篩選文本內(nèi)容,還可以對一個或多個文本進行編輯,更改,簡化對文件的反復(fù)操作。

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

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

option:

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

script:’地址+命令’

地址:

  1. )沒有地址:默認(rèn)對全文進行處理。
  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(奇數(shù)行)
    2~2 : 從2開始,步進為2(偶數(shù)行)

命令:

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

高級編輯命令:

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

案列

基本用法:

首先我們自己創(chuàng)建了一個方便查看效果的文件newf

 

基本篩選功能:

  1. 打印一到3行
  2. 查看文件帶有b的行到帶有a的行
  3. 打印奇數(shù)行
  4. 打印帶有字母a或帶有字母b的行
  5. 把所有b,c都換成a

    如果不帶g 每行只會替換第一個(默認(rèn))匹配到的字符
    g可以換成數(shù)字,表示替換匹配到的第幾個字符
    可以將字符替換為 空 表示刪除
  6. 在第3行前一行插入字符
  7. 在第3行后插入字符
  8. 將每行第二個字符刪除

    如圖所示,所有的空格被刪掉。-r選項支持?jǐn)U展正則表達式(相當(dāng)于sed ‘s/^(.)(.)/1/’)另一種方式sed ‘/.//2’ newfsed ”
  9. 把所有abc替換為ABC

    -y選項是把前面匹配的項全部對應(yīng)替換為后面的字符

進階用法:

  1. 將1行放到3行后面

    h:將模式空間的內(nèi)容覆蓋保持空間中
    G:將保持空間內(nèi)容追加到模式空間中
  2. 在每行后面添加1個空行

    保持空間默認(rèn)有一個空白行
  3. 把1到4行放在5行后面

    1h:覆蓋掉保持空間中的空白行
    1,4d:刪除最前面的4行
  4. 將第1行替換到第3行

 

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

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機構(gòu)!