sed 替換文件中的字符串

sed 替換文件中的字符串html

2016年04月13日 03:15:16web

閱讀數:17610centos

sed -e 's/foo/bar/' myfilebash

將 myfile 文件中每行第一次出現的foo用字符串bar替換,而後將該文件內容輸出到標準輸出.net

sed -e 's/foo/bar/g' myfilecode

g 使得 sed 對文件中全部符合的字符串都被替換htm

sed -i 's/foo/bar/g' myfile 
選項 i 使得 sed 修改文件blog

sed -i 's/foo/bar/g' ./m* 
批量操做當前目錄下以 m 開頭的文件pdo

sed -i 's/foo/bar/g' `grep foo -rl --include="m*" ./`字符串

``括起來的grep命令,表示將grep命令的的結果做爲操做文件 
grep 命令中,選項r表示查找全部子目錄,l表示僅列出符合條件的文件名,用來傳給sed命令作操做,--include="m*"表示僅查找 m 開頭的文件

操做示例:

sed -i '' 's/<img src=\"http:\/\/website\.cn\/f\/30/<img src=\"30/g' ./*.htm
  • 1

錯誤

command a expects \ followed by text

選項i的用途是直接在文件中進行替換。爲防止誤操做帶來災難性的後果,sed在替換前能夠自動對文件進行備份,前提是須要提供一個後綴名。mac osx下是強制要求備份的,centos下是可選的 
sed -i '.bak' 's/foo/bar/g' ./m* 
若是不須要備份文件,使用空字符串來取消備份,mac osx下能夠使用以下命令完成替換操做: 
sed -i '' 's/foo/bar/g' ./m*

sed: RE error: illegal byte sequence’

可設置環境變量解決

export LC_COLLATE='C' 
export LC_CTYPE='C'

[1] http://www.path8.net/tn/archives/4077 
[2] http://blog.sina.com.cn/s/blog_5fd841bf0101dt0r.html 
[3] http://www.netingcn.com/mac-osx-sed-command-expects-followed-by-text.html 
[4] http://lfstar.blog.163.com/blog/static/5637898720134365651965/ 
[5] http://stackoverflow.com/questions/11287564/getting-sed-error-illegal-byte-sequence-in-bash

相關文章
相關標籤/搜索