久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

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

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

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

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

 

基本篩選功能:

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

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

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

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

進階用法:

  1. 將1行放到3行后面

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

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

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

 

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

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 太谷县| 临汾市| 无棣县| 汝城县| 牙克石市| 义马市| 永丰县| 石柱| 西林县| 集安市| 双城市| 涪陵区| 临汾市| 永兴县| 沙田区| 连江县| 江陵县| 镇康县| 三都| 晋州市| 桦川县| 西乌珠穆沁旗| 德清县| 宁波市| 神池县| 泸西县| 峨眉山市| 鄂伦春自治旗| 洞头县| 洛川县| 昭平县| 江西省| 大兴区| 泌阳县| 肇东市| 邵东县| 重庆市| 敦煌市| 阳曲县| 黎城县| 响水县|