sed配合正則簡單應用

一. sed正則

^            匹配行首,如:/^sed/匹配所有以sed開頭的行。
$            匹配行尾,如:/sed$/匹配所有以sed結尾的行。
.            匹配一個非換行符的任意字符,如:/s.d/匹配s後接一個任意字符,最後是d。
*            匹配0個或多個其前面的字符,如:/*sed/匹配所有模板是一個或多個空格後緊跟sed的行。
[]           匹配一個指定範圍內的字符,如/[sS]ed/匹配sed和Sed。  
[^]          匹配一個不在指定範圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。
\(..\)       匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替換成lovers。
&            保存搜索字符用來替換其他字符,如s/love/**&**/,love這成**love**。
\<           匹配單詞的開始,如:/\<love/匹配包含以love開頭的單詞的行。
\>           匹配單詞的結束,如/love\>/匹配包含以love結尾的單詞的行。
x\{m\}       重複字符x,m次,如:/0\{5\}/匹配包含5個0的行。
x\{m,\}      重複字符x,至少m次,如:/0\{5,\}/匹配至少有5個0的行。
x\{m,n\}     重複字符x,至少m次,不多於n次,如:/0\{5,10\}/匹配5~10個0的行。

二. 簡單應用

將每一行的第一個字符與最後一個字符對調

sed -r 's/(^.)(.*)(.$)/\3\2\1/' a.txt

-r   選項 支持擴展正則,"^." 第一個字符,".*"  中間內容,".$" 最後一個字符

將每一行的第2個字符與倒數第2個字符對調

sed -r "s/(^.)(.)(.*)(.)(.$)/\1\4\3\2\5/" a.txt

^..   第二個字符  ..$   倒數第二個字符

sed -n 'p;n' a.txt   #打印奇數行
sed -n 'n;p' a.txt    #打印偶數行
sed -n '$=' a.txt    #統計行數

刪除所有的‘abc’,所有的‘123’,所有的‘A’。或者關係用  \|  表示

sed 's/abc\|123\|A//g' a.txt

去掉註釋與添加註釋

sed 's/^#//' a.txt
sed 's/^/#/' a.txt

刪除文件中每行的第二個、最後一個字符

sed 's/.//2;s/.$//' a.txt

將文件中每行的第一個、第二個字符互換

sed -r 's/(^.)(.)(.*)/\2\1\3/' a.txt

刪除文件中所有的數字、行首的空格

sed -r 's/[0-9]//g;s/^( )+//' a.txt 

爲文件中每個大寫字母添加括號

sed 's/[A-Z]/(&)/g' a.txt    #使用“&”可調用s替換操作中的整個查找串

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章