標(biāo)記說明
表示行內(nèi)全面替換。
表示打印行。
表示把行寫入一個(gè)文件。
表示互換模板塊中的文本和緩沖區(qū)中的文本。
表示把一個(gè)字符翻譯為另外的字符(但是不用于正則表達(dá)式)
子串匹配標(biāo)記
&
已匹配字符串標(biāo)記
符號(hào)說明
匹配行開始,如:/^sed/匹配所有以sed開頭的行。
匹配行結(jié)束,如:/sed$/匹配所有以sed結(jié)尾的行。
匹配一個(gè)非換行符的任意字符,如:/s.d/匹配s后接一個(gè)任意字符,最后是d。
匹配0個(gè)或多個(gè)字符,如:/*sed/匹配所有模板是一個(gè)或多個(gè)空格后緊跟sed的行。
匹配一個(gè)指定范圍內(nèi)的字符,如/[ss]ed/匹配sed和Sed。
匹配一個(gè)不在指定范圍內(nèi)的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個(gè)字母開頭linux常用命令,緊跟ed的行。
& 保存搜索字符用來替換其他字符,如s/love/**&**/,love這成**love**。如:'[a-z]+able',匹配一個(gè)或多個(gè)小寫字母后跟able的串,如loveable,enable,disable等。():分組符號(hào),如:love(able|rs)ov+匹配loveable或lovers,匹配一個(gè)或多個(gè)ov。
&
保存搜索字符用來替換其他字符,如s/love/**&**/,love這成**love**。
\<
匹配單詞的開始,如:/\<love/匹配包含以love開頭的單詞的行。
\>
匹配單詞的結(jié)束,如/love\>/匹配包含以love結(jié)尾的單詞的行。
x\{m\}
重復(fù)字符x,m次,如:/0\{5\}/匹配包含5個(gè)0的行。
x\{m,\}
重復(fù)字符x,至少m次,如:/0\{5,\}/匹配至少有5個(gè)0的行。
x\{m,n\}
重復(fù)字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10個(gè)0的行。
sed ‘2p’ filename #打印第二行(第二行會(huì)打印兩遍),并且會(huì)打印文本全部內(nèi)容
sed -n ‘2p’ filename #只打印第二行
sed -n '3.5p' filename #打印3到5行
sed -n '/findstr/p' filename #打印匹配到findstr的行
sed -n '/findstr1/,findstr2/p' #打印匹配分的findstr1和findstr2的行
sed -n '3,5{=;p}' filaname #打印3到5行,并且打印行號(hào)
sed -n '3.5!(=;p)' filename #打印除了3到5行的其他行 !表示對條件取反,其他情況也適用。
sed -n '/pattern/p' filename #打印符合正則表達(dá)式pattern的行,正則表達(dá)式不在此介紹
sed -e '1d' filename #刪除第一行l(wèi)inux常用命令,但是不修改原文件。實(shí)際上把查找中的p換成d,即由打印變成刪除動(dòng)作。而-e 選項(xiàng)更換為-i選項(xiàng),表明直接修改原文件
# -i表明直接修改源文件,注意。
sed -i '/str1/s/^/str2/' filename #在有str1的行首增加str2字符
sed -i 's/str1/str2&/' filename #在str1前增加str2字符串
sed -i 's/str1/&str2/' filename #在str1后增加str2字符串
sed -i '/str1/s/$/str2/' filename #在有str1的行尾加上str2字符串
sed -i '/str1/i\str2/' filename #在有str1的前一行增加一行,內(nèi)容為str2
sed -i '/str1/a\str2/' filename #在有str1的后一行增加一行,內(nèi)容為str2,如果要添加多行,需要添加\n轉(zhuǎn)義符,例如 '/str1/astr2\nstr3'
sed -i 's/^/str/' filename #每行開頭添加str字符串
sed -i 's/$/str/' filename #每行結(jié)尾添加str字符串
sed -i '1,3s/^/str/' filename #1到3行行首添加str字符串
sed -i '/str1/s@/str2@str3@' filename #將有str1的行中的str2替換為str3,但是只修改一次
sed -i '/str1/s@/str2@str3@/ng' filename #與上一條作用類似,但是是修改n次,如果不帶n,則表示修改全文
sed是一個(gè)非常有用且重要的文本處理工具之一,以上就是sed命令的一些常見操作介紹。