天天看點

sed

sed是一種流編輯器,它是文本進行中非常重要的工具,能夠完美的配合正規表達式使用,功能不同凡響。處理時,把目前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接着用sed指令處理緩沖區的内容,處理完成後,把緩沖區的内容送到螢幕。接着處理下一行,這樣不斷重複,知道檔案末尾。檔案内容并沒有改變,除非你使用重定向存儲輸出。sed主要用來自動編輯一個或多個檔案;簡化對檔案的反複操作;編寫轉換程式。

列印某行

格式:sed -n 'n'p filename 單引号内的n是一個數字,表示第幾行。-n是隻顯示我們要列印的行。p将結果列印出來。

sed -n '/root/'p test.txt

sed

sed列印出來沒有顔色顯示,grep列印有顔色顯示。

sed同樣可以使用{}、+、?、|、()這些符号,使用時必須加上脫義符\。(使用.*不用加脫義符)

加上-r參數時可以不用脫義符。

sed

把所有行都列印出來

sed -n '1,$'p test.txt  #$指行的結尾。

sed

指定一個區間列印

sed -n '1,3'p test.txt

#列印第一到三行,單個數字n為列印第幾行。

sed

查找以某個字元串開頭或結尾

sed

注意:列印包含某個字元串的時候需要使用//将字元串放到裡面。例如 sed -n '1'p test.txt 這條指令是列印第一行。

sed -n '/1/'p test.txt 這條指令是列印含有字元1的行。

-e選項可以實作多個行為

sed

加上i參數後,不區分大小寫。

sed

删除指定的行

使用d參數,d表示删除動作

sed '1'd test.txt #删除檔案的第一行。

sed '1,20'd test.txt #删除檔案的1至20行。

sed

這個删除操作進階是在顯示器螢幕上不顯示這些行而已,并沒有對文檔進行操作。

sed

删除某個字元串比對的行

sed '/nologin/'d test.txt #删除含有nologin字元串的行。

sed

-i 參數,直接修改檔案的内容

sed -i '1,20'd test1.txt #将檔案test1.txt中的1到20行删除

sed

替換字元或字元串

s就表示替換的動作。參數g表示本行全局替換,如果不加g則隻替換本行出現的第一個。

除了使用/作為分隔符外,還可以使用@和#作為分隔符。

sed '1,2 s /ot/to/g' test.txt

#将文檔中第1、2行中所有的ot替換成to

sed

不加參數g就隻替換第一個ot

sed

删除檔案中的所有字母或所有數字

就是将檔案中的所有字母或數字替換成空。

sed 's/[0-9]//g' test.txt #删除檔案中所有數字

sed

sed 's/[a-za-z]//g' test.txt#删除檔案中所有字母

sed

調換兩個字元串的位置

sed

在某一行前面加上字元串

sed

a,i都是新增

a是目前的下一行  i是目前的上一行

sed '2a drink tea' test.txt #在檔案第二行後增加一行

sed '2i drink beer' test.txt #在檔案第二行前增加一行

sed
sed
sed