linux中如何替换文件中的字符串http://like-eagle./blog/697655方法有二:
(一)通过vi编辑器来替换。 参考博文: http://www./viewarticle.php?id=99843 http://kingaragorn./blog/467308
vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用编辑软件进行替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。
(二)Sumly法直接替换文件中的字符串。(此法不用打开文件即可替换字符串,而且可以批量替换多个文件。) 参考博文: http://easytech./blog/316948 例1 执行命令:
例2 执行命令: perl -p -i -e "s/memory_production/memory_production2/g" ./*.sql
上面的意思是将当前目录下所有的sql文件中的“memory_production”替换成“memory_production2” ======================================linux sed 批量替换多个文件中的字符串 http://www./linux/accidence/20100422/29910.html linux下批量替换文件内容 1、网络上现成的资料 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` Svn中文网 linux sed 批量替换多个文件中的字符串 sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir` 例如:替换/home下所有文件中的www.admin99.net为admin99.net Bbs.Svn8.Com sed -i "s/www.admin99.net/admin99.net/g" `grep www.admin99.net -rl /home` Bbs.Svn8.Com
exp:sed -i "s/shabi/$/g" `grep shabi -rl ./` Svn8.Com 2、自己额外附加 Svn8.Com 2.1 将文件1.txt内的文字“garden”替换成“mirGarden” # sed -i "s/garden/mirGarden/g" 1.txt //sed -i 很简单 2.2 将当前目录下的所有文件内的“garden”替换成“mirGarden” ## sed -i "s/garden/mirGarden/g" `ls` //其实也就是ls出多个文件名而已
====================================
==================Linux下如何同时替换多个文件中的文本或字符串 http://hi.baidu.com/jiqing0925/blog/item/0e97ea196662ab4242a9ad14.html ==================================== 作者:吉庆( qingfang0515@sina.com ) 主页:http://hi.baidu.com/jiqing0925 转载请保留作者信息。 ------------------- 做一件比较复杂的事通常存在多种方法。 一次性替换多个文件中的文本是我们常遇到的问题,下面是解决这个问题的三种方法: 1. vi 方法 参见vim用户手册26. *26.3* 改动多个文件 注意: 如果替换的字符包括 这种方法的好处是不用启动编辑器,比较迅速。缺点是容易出现不想要的替换,例如:把px_cnt替换成了px_counter。 3. sed仍以上面的例子讲解: find . -name "*.c" -print0 | xargs -0 sed -i 's/x_cnt/x_counter/g' 优缺点和perl方法相同。 以上方法的差异只在于使用工具的不同,相信肯定还有别的工具能办到这件事。 比如emacs,肯定也能做到这些,只是因为我不用emacs,所以不熟悉。 希望大家总结自己得心应手的方法。 Linux sed批量替换多个字符串 http://www./content-detail/105074.html 比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules` 解释一下: -i 表示inplace edit,就地修改文件 -r 表示搜索子目录 -l 表示输出匹配的文件名 这个命令组合很强大,要注意备份文件。 (1)sed 'y/1234567890/abCDEFGHIJ/' test_sed sed 'y/1234567890/abCDEFGHIJ/' filename abCDEFGHIJ BCDEFGHIJA CDEFGHIJAB DEFGHIJABC 注意变换关系是按两个list的位置对应变换 其中:test_sed的内容是: 1234567890 2345678901 3456789012 4567890123 (2)替换每行所有匹配 sed 's/01/Ab/g' test_sed 1234567890 23456789Ab 3456789Ab2 456789Ab23 注意:第一行的0,1没有分别替换为A,b 删除:d命令 * $ sed '2d' example-----删除example文件的第二行。 * $ sed '2,$d' example-----删除example文件的第二行到末尾所有行。 * $ sed '$d' example-----删除example文件的最后一行。 * $ sed '/test/'d example-----删除example文件所有包含test的行。 替换:s命令 * $ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。 * $ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。 * $ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost。 * $ sed -n 's/\(love\)able/\1rs/p' |
|