站長資訊網
        最全最豐富的資訊網站

        總結linux中sed命令的使用方法

        總結linux中sed命令的使用方法

        linux之sed命令:

        1 初識sed

        sed編輯器被稱作流編輯器,它和vim這種的交互式文本編輯器不同,是根據命令來處理數據流中的數據。會執行下列操作:

        • 一次從輸入中讀取一行數據(重復該操作直到全部行被讀取完)

        • 根據編輯器命令匹配數據

        • 按照命令修改數據流中的數據

        • 將新數據輸出到STDOUT(標準輸出)

        其中sed命令的可以從命令行中輸入,也可以從一個命令文件中讀取。

        sed -e script 添加script中指定的命令 sed -f file 添加file中指定的命令

        1.1 在命令行定義sed命令【推薦學習:linux視頻教程】

        來看一個簡單的文本替換示例:

        echo "hi,my name is xxx" | sed 's/xxx/kinsomy/' #修改文件 sed 's/xxx/kinsomy/' data.txt #執行多個命令 用-e選項,分號隔開 sed 's/xxx/kinsomy/; s/***/hhh/' data.txt

        將echo輸出的數據通過管道輸入sed中,然后用s命令進行替換,用第二個斜杠后的數據替換掉第一個斜杠后匹配的數據。

        注意:sed操作文本文件中的數據,僅僅是將修改的數據輸出到STDOUT,但是并不會修改文件本身的數據

        1.2 從文件讀取命令

        在一個文件script.sed中定義一系列的命令,方便復用。

        s/*/a s/x/b s/-/+

        

        # -f選項指定命令文件 sed -f script.sed data.txt

        2 sed基礎

        2.1替換標記

        上面的例子echo "hi,my name is xxx" | sed 's/xxx/kinsomy/'只會替換每一行中匹配到的第一個數據,但是一行數據中若有多個匹配項,則不能全部被替換掉。

        echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/' #輸出 hi,my name is kinsomy, i am xxx

        這個時候可以使用一些替換標記substitution flag來設置替換的模式。替換標記跟在替換字符串之后。

        s/pattern/replacement/flags

        數字,表示將替換掉第幾處被匹配到的數據

        echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/2' #輸出 第二個xxx被替換成kinsomy hi,my name is xxx, i am kinsomy

        g,表示替換所有匹配到的數據

        echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/g' #輸出 第二個xxx被替換成kinsomy hi,my name is kinsomy, i am kinsomy

        p,表示會打印出被匹配出來的行

        echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/p' #輸出 hi,my name is kinsomy, i am xxx hi,my name is kinsomy, i am xxx
        w,將替換后輸出保存到指定文件 echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'

        2.3 行尋址

        上文說到sed命令是一行行讀取文本,進行匹配操作數據,知道所有行被遍歷完,如果這時候我們想要對特定的行做操作就要使用行尋址。 行尋址有兩種形式:

        數字形式表示行

        # 操作單行 $ sed '2s/xxx/***/' data.txt # 操作一定行區間[2,4] $ sed '2,4s/xxx/***/' data.txt # 操作某行開始到最后[2,endline] $ sed '2,$s/xxx/***/' data.txt

        文本模式過濾器

        首先在/etc/passwd內找到kinsomy的記錄,然后將bash替換為csh。文本模式過濾器配合正則表達式會很強大。

        sed '/kinsomy/s/bash/csh/' /etc/passwd

        2.4 刪除行

        使用刪除命令d對文本進行刪除操作。

        # 刪除所有文本 sed 'd' data.txt # 刪除單行 sed '2d' data.txt # 刪除行區間[2,3] sed '2,3d' data.txt # 刪除行區間[2,endline] sed '2,$d' data.txt # 刪除匹配文本aa的行 sed '/aa/d' data.txt # 刪除兩個匹配文本之間的文本 匹配到1和3的行之間的文本全部被刪除 sed '/1/,/3/d' data.txt

        2.5 插入、附加文本

        插入命令i在指定行前增加新行

        附加命令a在指定行后增加新行

        # 追加 echo "Line 2" | sed 'a pipe quote> Line 1' #插入 echo "Line 2" | sed 'i pipe quote> Line 1'

        2.6 修改行

        c命令用來修改一行數據

        # 修改第三行文本 sed '3c pipe quote> change line ' data.txt

        2.7 轉換命令

        命令格式 sed 'y/inchar/outchar'

        將inchar中的字符一一對應地轉換成outchar的字符

        echo "This 1 is a test of 1 try." | sed 'y/123/456/' # 輸出 This 4 is a test of 4 try.

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 欧洲精品99毛片免费高清观看| 国产a∨精品一区二区三区不卡| 亚洲精品乱码久久久久久蜜桃图片 | 国内精品91最新在线观看| 日韩精品一区二区三区视频| 2021国产三级精品三级在专区| 国产精品亚洲日韩欧美色窝窝色欲 | 精品国产亚洲男女在线线电影| 久久91综合国产91久久精品| 精品无码无人网站免费视频| 中文字幕日韩精品在线| 免费精品精品国产欧美在线 | 99RE6热在线精品视频观看| 无码国内精品人妻少妇| 拍国产乱人伦偷精品视频| 精品国产日韩亚洲一区| 国产精品秘入口福利姬网站| 亚洲国产精品久久久久| 国产成人精品免费视频大全麻豆 | 无码精品国产一区二区三区免费 | 55夜色66夜色国产精品视频| 久久精品亚洲精品国产色婷| 亚洲国产精品无码专区在线观看| 亚洲精品欧美精品日韩精品| 欧美精品三区| 麻豆国产高清精品国在线| 久久精品这里只有精99品| 免费人成在线观看欧美精品| 久久国产香蕉一区精品| 人妻少妇精品久久| 亚洲国产91精品无码专区| 亚洲精品高清一二区久久| 亚洲无码精品浪潮| 三上悠亚久久精品| 精品久久久久久无码专区| 成人区精品一区二区不卡| 国产精品久久免费| 中文字幕成人精品久久不卡| 国产精品99爱免费视频| 精品人妻少妇一区二区三区| 亚洲精品国产综合久久一线|