一、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.> :如果文件不存在,同上,如果文件存在,先将文件清空,然后将数据填入此文件.