sed 一 文本處理工具

簡介

sed 採用的是流編輯模式:
    最明顯的特色是,在 sed 處理數據以前,須要預先提供一組規則,sed 會按照此規則來編輯數據。


sed 會根據腳本命令來處理文本文件中的數據,這些命令要麼從命令行中輸入,要麼存儲在一個文本文件中。


此命令執行數據的順序以下:
    1. 每次僅讀取一行內容。根據提供的規則命令匹配並修改數據。
       注意,sed 默認不會直接修改源文件數據,而是會將數據複製到緩衝區中,修改也僅限於緩衝區中的數據;
    2. 將執行結果輸出。
    3. 當一行數據匹配完成後,它會繼續讀取下一行數據,並重復這個過程,直到將文件中全部數據處理完畢。

sed 基本選項

sed [選項] [腳本命令] 文件名

    選項  
    -e  腳本命令,該選項會將其後跟的腳本命令添加到已有的命令中。

    -f  腳本命令文件,該選項會將其後文件中的腳本命令添加到已有的命令中。

    -n  默認狀況下,sed 會在全部的腳本指定執行完畢後,會自動輸出處理後的內容,
        而該選項會屏蔽啓動輸出,需使用 print 命令來完成輸出。

    -i  此選項會直接修改源文件,要慎用。

查找替換

s
    查找替換腳本命令。此命令的基本格式爲:
        [address]s/pattern/replacement/flags

    address 表示指定要操做的具體行,
    pattern 指的是須要替換的內容,
    replacement 指的是要替換的新內容。

    flags標記
        選項
        n   1~512 之間的數字,表示指定要替換的字符串出現第幾回時才進行替換,
            例如,一行中有 3 個 A,但用戶只想替換第二個 A,這是就用到這個標記;

        g   對數據中全部匹配到的內容進行替換,
            若是沒有 g,則只會在第一次匹配成功時作替換操做。
        p   會打印與替換命令中指定的模式匹配的行。此標記一般與 -n 選項一塊兒使用。
        w file  將緩衝區中的內容寫到指定的 file 文件中;
        &   用正則表達式匹配的內容進行替換;
        \n  匹配第 n 個子串,該子串以前在 pattern 中用 \(\) 指定。
        \   轉義(轉義替換部分包含:&、\等)。


sed -n "s/aa[a-z]aa/aa666aa/p" ld
    查找替換並打印

常見命令

a\string  在當前行後添加一行或多行。多行時除最後一行外,每行末尾需用「\」續行
 
c\  用此符號後的新文本替換當前行中的文本。多行時除最後一行外,每行末尾需用"\"續行
 
i\  在當前行以前插入文本。多行時除最後一行外,每行末尾需用"\"續行
 
d   刪除行
 
h   把模式空間裏的內容複製到暫存緩衝區
 
H   把模式空間裏的內容追加到暫存緩衝區
 
g   把暫存緩衝區裏的內容複製到模式空間,覆蓋原有的內容
 
G   把暫存緩衝區的內容追加到模式空間裏,追加在原有內容的後面
 
l   列出非打印字符
 
p   打印行
 
n   讀入下一輸入行,並從下一條命令而不是第一條命令開始對其的處理
 
q   結束或退出sed
 
r   從文件中讀取輸入行
 
!   對所選行之外的全部行應用命令
 
s   用一個字符串替換另外一個
 
g   在行內進行全局替換
 
w   將所選的行寫入文件
 
x   交換暫存緩衝區與模式空間的內容
 
y   將字符替換爲另外一字符(不能對正則表達式使用y命令)

示例

sed "2d" ld
    刪除第二行

sed "/[0-9]/d" ld
    用正則匹配數字的行並刪除

sed "/12/d" ld
    匹配12的行並刪除
相關文章
相關標籤/搜索