`

linux sed 批量替换文件内容

 
阅读更多

一、linux sed 批量替换多个文件内容
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`

其中,grep oldstring -rl yourdir是查寻目录中文件内容

 

如将indexeddb目录里的文件内容替换

#IDBTransaction.READ_ONLY替换为"readonly"

sed -i "s/IDBTransaction.READ_ONLY/\"readonly\"/g" `grep "IDBTransaction.READ_ONLY" -rl indexeddb/`

#driver.get_current_url()替换为driver.current_url

sed -i "s/driver.get_current_url()/driver.current_url/g" `grep "driver.get_current_url()" -rl webdriver/`

 

-i 表示inplace edit,就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名

 

二、Perl命令:
perl -pi -e 's|ABCD|Linux|g' `find ./ -type f`
将调用perl执行一条替换命令,把find命令找到的所有文件内容中的ABCD替换为Linux

find ./ -type f
此命令是显示当前目录下所有的文件

上面的“s|ABCD|Linux|g”是perl要执行的脚本,即把所有ABCD替换为Linux
如果不写最后的那个g,“s|ABCD|Linux| ”将只替换每一行开头的ABCD

 

三、行尾匹配

如下:清除行尾的'/'

grep "<link rel=\"author\" title=\"Intel\" href=\"http:\/\/www.intel.com\" \/>" -rl ./ |xargs -I% sed -i 's/\/>$/>/g' %

注意表达式:s/ \ /> $/ > /g(即'/>' to '>')

几点说明:

1."^"代表行首,"$"代表行尾

2.'s/$/&TAIL/g'中的字符g代表每行出现的字符全部替换,如果想在特定字符处添加,g就有用了,否则只会替换每行第一个,而不继续往后找了

3.>> :如果文件不存在,将创建新的文件,并将数据送至此文件;如果文件存在,则将数据添加在文件后面
4.>  :如果文件不存在,同上,如果文件存在,先将文件清空,然后将数据填入此文件.

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics