Sed命令的使用總結

2021-09-01 10:04:33 字數 3282 閱讀 9223

1>.sed刪除行首的空格或tab字元。

sed 's/^[ \t]*//g' file

sed 's/^ *//g' file

2>.sed輸出字串:

列印第三行(3表示等號,p表示列印)

sed -n '3p' /etc/passwd

列印2至5行

sed -n '2,5p' /etc/passwd

從第2行開始,每隔3行列印一行

sed -n '2~3p' /etc/passwd

列印最後一行

sed -n '$p' /etc/passwd

列印包含或不包含root的行

sed -n '/root/p' /etc/passwd

sed -n '/root/! p' /etc/passwd

列印包含/bin/bash的行(%regexp%可以不用轉義斜槓)

sed -n '\%/bin/bash%p' /etc/passwd

忽略大小寫的搜尋

sed -n '\%/bin/bash%ip' /etc/passwd或sed -n '/\/bin\/bash/ip' /etc/passwd

搜尋從開始到sshd字元的範圍

sed -n '0,/sshd/p' /etc/passwd

3>sed正規表示式的介紹:

char

只匹配本身char

*匹配之前字元的0個或更多

+與*相比,只是匹配1個或更多

?匹配前面字元的0個或1個

匹配前面字元的i個,i是整數

匹配前面字元的i至j個,包含i和j

匹配前面字元的i個或i個以上

(regexp)

分組字元,兩個作用1、(abcd)*會搜尋0個或多個abcd字元,abcd是作為乙個整體2、作為反向引用,可以使用1 2等引用。

.匹配任何字元,包括換行符

^匹配行的開始

$匹配行的結束

[list]

匹配list中的任單字元,如l,i,s,t

[^list]

反向匹配l,i,s,t

regexp1|regexp2

匹配regexp1或者regexp2

regexp1regexp2

匹配regexp1與regexp2連線

n匹配換行字元

char

匹配特殊字元,如$, *, ., [, , ,^

4>sed引數詳解:

-e或—expression=以選項中指定的script來處理輸入的文字檔案。

-fsed常用命令:

q退出命令,sed '11 q' /etc/passwd 相當於head /etc/passwd

d刪除命令,sed '1 d' /etc/passwd 刪除第一行

p列印命令,一般與-n選項連用

6>替換命令s:

命令的格式為:s/regexp/replacement/flags

把root替換成rooter

sed 's/root/rooter/' /etc/passwd

replacement可以是n(n為1到9的數字),表示引用regexp裡的(matching):如

echo "123abc" | sed 's/([0-9]*).*/1/』

([0-9]*).*匹配了123abc,而([0-9]*)匹配123,所以1內容為123,所以這個例子的結果為123。

flags的可選值如下:

g將replacement應用於所有reqexp所匹配的,不僅僅是第乙個的匹配。

number

只替換第n個的匹配

p當替換已經完成,列印新的結果

w file-name

當替換完成,把新結果儲存到檔案ii

忽略大小寫。

7>不常用的幾個命令:

y/source-chars/dest-chars/

source-chars與dest-chars長度要相同,轉換是一一對應的,如a轉換成a,b轉換成b:sed 『y/ab/ab/』

atext

sed 『/root/ ai am root』 /etc/passwd

itext

sed 『/root/ ii am root』 /etc/passwd

ctext

用text替換匹配的行,如把含有root的行內容替換為i am root:

sed 『/root/ ci am root』 /etc/passwd

=列印行號,如顯示含有root所在的行號:sed -n 『/root/=』 /etc/passwd

l n以n個長度分割匹配到的行,並以結尾,如以長度為4個字元分隔含有root的行:sed 『/root/ l 4′ /etc/passwd

r filename

讀取檔案到輸出,如在含有root的行下面插入file檔案:sed 『/root/r file』 /etc/passwd

w filename

儲存輸出流到檔案,如儲存含有root的行到file檔案:sed 『/root/w file』 /etc/passwd

n7>選擇性的顯示行:

# 顯示檔案中的前10行 (模擬「head」的行為)

1.sed 10q /etc/passwd

# 顯示檔案中的第一行 (模擬「head -1」命令)

1.sed q

# 只顯示匹配正規表示式的行(模擬「grep」)

1.sed -n '/regexp/p' # 方法1

2. sed '/regexp/!d' # 方法2

# 顯示包含「aaa」、「bbb」或「ccc」的行(任意次序)

1.sed '/aaa/!d; /bbb/!d; /ccc/!d' # 字串的次序不影響結果

# 顯示包含65個或以上字元的行

1.sed -n '/^.\/p'

# 顯示包含65個以下字元的行

1.sed -n '/^.\/!p' # 方法1,與上面的指令碼相對應

2. sed '/^.\/d' # 方法2,更簡便一點的方法

# 從第3行開始,每7行顯示一次

1.sed -n '3~7p' # 只對gnu sed有效

2. sed -n '3,$' # 其他sed

5>插入一行:

插入一行

14. sed 『3 i/haha『 a.txt 在第三行的位置插入一行haha

新增一行

15. sed 『3 a/haha『 a.txt 在第三行後的位置插入一行haha

替換整行

16. sed 『3 c/haha『 a.txt 將第三行整行替換為haha

sed命令使用總結

sed命令在處理文字內容的時候,作用非常強大,例如 刪除某行,替換,在某一行的後面增加一行等等功能。假設此時有個文件 test.txt 內容如下 a.a.a.a 10 b.b.b.b 40 c.c.c.c 100 現在我要刪除b.b這一行,命令如下 sed i b.b.b.b 40 d test.t...

sed命令總結

1.刪除首字母問空的行 2.刪除第二到第八的所有行。3.編寫sed指令碼,替換與行匹配相同的內容,即將boby替換為 boby,但僅替換第二個boby為 boby.root localhost tmp cat test1.txt first web wqeqwe root localhost tmp...

sed命令總結

sed是一種流編輯器,能夠完美的配合正規表示式使用。處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 pattern space 接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有 改變,除非你使用重定向儲存輸出...