sed替換字符時< ' /等符號的處理


今天遇到個需求需要替換字符,本來在SQL里做,但是想嘗試一下sed,把過程記錄一下

需求是把下面的文本

(1796208919349287,2592294224942165,1527446512828944,'abc','<a href=\'/users/7310739222965755\'>@xxd</a> Hello World!',(2027149921324245,1612506768201878,2155431015165304,'def','<a href=\'/users/1696908528085920\'>@xyz</a> Would you like to.....?'........

替換成

(1796208919349287,2592294224942165,1527446512828944,'abc','@xxd Hello World!',(2027149921324245,1612506768201878,2155431015165304,'def','@xyz Would you like to.....?'........

其實重點就是把<a href=\'/users/7310739222965755\'> </a>這兩部分去掉

最終的命令是這樣的

sed -e 's/<a href=\\'\''\/users\/[[:digit:]]\{16\}\\'\''>/ /g' \
    -e 's/<\/a>/ /g' \
    file.sql

讓我們把命令拆開看

's/<a href=\\'\''\/users\/[[:digit:]]\{16\}\\'\''>/ /g' \

\\第一個\是后一個\的轉譯
'\''
在shell下在單引號內的單引號轉譯需要用'\''
[[:digit:]]\{16\}
任意的16位數字
\\
再一次轉譯\
'\''
再一次轉譯'

--EOF--


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM