sed 命令專題

fjzcau發表於2015-02-08
sed -i 's/20120408/20120409/g' *.verf

--多個空格合併為一個空格
sed -i 's/[ ][ ]*/[ ]/g'   datafile


--刪除空白行
sed -i '/^[\s| ]*$/d'    datafile

刪除當前目錄下所有c檔案中get_tbms所在的行:
find . -name "*.c"| xargs -i {} sed -i -e '/get_tbms/d' {}

將字串uHALr_printf( 或 error_printf( 或 sys_printf( 或 printf(
替換為 StsRtsPrintf(DEBUG_OS_TYPE :
find . -name "*.c" | xargs -i{} sed -i -e 's/
            -e 's/
            -e 's/
            -e 's/

--------------------------------------------------------------
需要在匹配‘bbb = ’ 的行下,增加新行‘, abcdefg’
sed -i '/bbb = /a\\, abcdefg'    datafile

需要在匹配‘bbb = ’ 的行尾追加字串‘, abcdefg’
sed -i '/bbb =/{s/$/, abcdefg/}'      datafile

sed -i '/bbb =/ s/$/,abcdef/'         datafile

需要在匹配‘bbb = ’ 的串尾後追加字串‘, abcdefg’
sed -i 's/bbb=.*/&,abcdefgh/'    datafile
串前:
sed -i 's/bbb=.*/abcdefgh,&/'    datafile
sed -i 's/bbb=/abcdefgh,&/'    datafile
----------------------------------------------------------

----------&gt 刪除檔案datafile中所有的  's形式所有格式單詞所在的行-----&gt
原檔案內容:
ss
aa'bb
cc    cc'a
ee

sed  -i 's/[a-z]\+'\''[a-z]\+//'  datafile

刪除後:
ss

cc    cc'a
ee

                                 
sed '/'\''/d' file

sed '/'"'"'/d' file

sed "/'/d" file

sed -i "/'s/d" file


--------------------------------------------------------------------------
單引號為絕對引用,雙引號中可以用變數:
sed 's/aaa/bbb/'     /etc/passwd
i=bbb
sed "s/aaa/$i"          /etc/passwd

多條指令:                                                                                                                                                                          
sed 's/aaa/bbb/;s/mmm/nnn/'     /etc/passwd     或者
sed -e 's/aaa/bbb/' -e 's/mmm/nnn/'     /etc/passwd
sed 's/lo/xo/2'     << sed不能匹配換行符
sed 's/^ *$//'          匹配空行,或有空格
sed 'N;s/\n//'          sed '/^$/d'     /etc/passwd          刪除空行
sed 's/A-Z/(&)/'     << sed -r 's/(.*):(.*):(.*)/\3-\2-\1/'     實現以:分割的,列出第三列、第二列、第一列
sed '1,3d'     /etc/passwd          刪除1到3行
sed '/root/d'     /etc/passwd     有root就刪掉整行
sed -r '1,5{s/a/b/;s/c/d/}'           在相同範圍內作很多動作
sed 'y/abcdefg/ABCDEFG/' << sed '/root/a ##########################' /etc/passwd          遇到root就在該行後追加##########
sed '/root/i ##########################' /etc/passwd          遇到root就在該行前追加##########
sed 'N;s/\n/\t/'     /edd          兩行合成一行
sed '1,5{H;d};10G' /etc/passwd          把1到5行剪下到10行後,h覆蓋保持空間,H追加
sed '1,5H;10G' /etc/passwd               把1到5行復制到10行後,g覆蓋原有行,G在原有行後追加
------------------------------------------------

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22661144/viewspace-1430659/,如需轉載,請註明出處,否則將追究法律責任。

相關文章