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命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有 改變,除非你使用重定向儲存輸出...