linux中批量替换文本中字符串--转载

(一)通过vi编辑器来替换。
vi/vim 中可以使用 :s 命令来替换字符串。
:s/well/good/ 替换当前行第一个 well 为 good
:s/well/good/g 替换当前行所有 well 为 good
:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good
:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good
:%s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#well/#good/# 替换当前行第一个 well/ 为 good/
:%s#/usr/bin#/bin#g 可以把文件中所有路径/usr/bin换成/bin

(二)直接替换文件中的字符串。(此法不用打开文件即可替换字符串,而且可以批量替换多个文件。)
1.perl命令替换,参数含义如下:
-a    自动分隔模式,用空格分隔$_并保存到@F中。相当于@F = split ”。分隔符可以使用-F参数指定
-F    指定-a的分隔符,可以使用正则表达式
-e    执行指定的脚本。
-i<扩展名>   原地替换文件,并将旧文件用指定的扩展名备份。不指定扩展名则不备份。
-l    对输入内容自动chomp,对输出内容自动添加换行
-n    自动循环,相当于 while(<>) { 脚本; }
-p    自动循环+自动输出,相当于 while(<>) { 脚本; print; }
用法示例:
perl -p -i.bak -e ‘s/\bfoo\b/bar/g‘ *.c
将所有C程序中的foo替换成bar,旧文件备份成.bak

perl -p -i -e "s/shan/hua/g" ./lishan.txt ./lishan.txt.bak 
将当前文件夹下lishan.txt和lishan.txt.bak中的“shan”都替换为“hua”

perl -i.bak -pe ‘s/(\d+)/ 1 + $1 /ge‘ file1 file2 
将每个文件中出现的数值都加一

2.sed命令下批量替换文件内容   

格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名

-i 表示inplace edit,就地修改文件

-r 表示搜索子目录

-l 表示输出匹配的文件名
s表示替换,d表示删除

示例:sed -i "s/shan/hua/g"  lishan.txt

把当前目录下lishan.txt里的shan都替换为hua

sed的其他用法如下:

1、删除行首空格
   sed ‘s/^[ ]*//g‘ filename
   sed ‘s/^ *//g‘ filename
   sed ‘s/^[[:space:]]*//g‘ filename

2、行后和行前添加新行
   行后:sed ‘s/pattern/&\n/g‘ filename
   行前:sed ‘s/pattern/\n&/g‘ filename
   &代表pattern

3、使用变量替换(使用双引号)
    sed -e "s/$var1/$var2/g" filename

4、在第一行前插入文本
    sed -i ‘1 i\插入字符串‘ filename

5、在最后一行插入
    sed -i ‘$ a\插入字符串‘ filename

6、在匹配行前插入
    sed -i ‘/pattern/ i "插入字符串"‘ filename

7、在匹配行后插入
   sed -i ‘/pattern/ a "插入字符串"‘ filename

8、删除文本中空行和空格组成的行以及#号注释的行
   grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d

时间: 2024-12-28 05:30:07

linux中批量替换文本中字符串--转载的相关文章

shell 批量替换文本中的内容

批量替换脚本文件中的目录/proc,为/etc/init.d [[email protected] course_04]# more test.sh  #!/bin/bash DIR=/proc aa=`ls $DIR` echo $aa 验证是否全部修改完成

linux sed 批量替换多个文件中的字符串

转载:http://blog.csdn.net/kauu/article/details/1757325 一.linux sed 批量替换多个文件中的字符串 sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir` 例如:替换/home下所有文件中的www.bcak.com.cn为bcak.com.cn sed -i "s/www.bcak.com.cn/bcak.com.cn/g" `grep ww

linux sed 批量替换多个文件中的字符

格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` linux sed 批量替换多个文件中的字符串 sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir` 例如:替换/home下所有文件中的www.admin99.net为admin99.net sed -i "s/www.admin99.net/admin99.net/g" `grep w

PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能

PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能 网上很多正则表达式只能获取或者替换一个img的src内容,或者只能替换固定的字符串,要动态替换多个图片内容的试了几个小时才解决. /*** 图片地址替换成压缩URL* @param string $content 内容* @param string $suffix 后缀*/function get_img_thumb_url($content="",$suffix="!c550x260.jpg&q

怎样在word中批量替换文字?Word替换文字这一招你会吗?

平时我们在编辑word文档的时候,经常会遇到将文档中的某一个文字或者是数字替换成别的内容,很多人想到的方法就是一个字一个字的找,之后进行更改,这样会很耽误我们的时间,如果你的文档内容过多的话难道你也会使用这种方法进行操作吗?除了上述方法有没有更简单的方法呢?其实我们可以将需要修改的内容用word中的查找替换功能来帮助解决的,下面将方法分享给大家! 1.首先,打开word文档,如图所示: 2.输入开始按钮,在出现的一排菜单栏中找到查找替换功能,输入查找替换后面的倒三角,在弹出的下拉框中输入替换:

Sed替换文本中的指定内容

可以这样做:方法1:sed -i 's/被替换的内容/要替换成的内容/' file 方法2:sed 's/被替换的内容/要替换成的内容/g' file > file.outmv file.out file 这里注意:不能这样做:sed 's/被替换的内容/要替换成的内容/g' file > file这样只会清空源文件. Sed替换文本中的指定内容,布布扣,bubuko.com

php批量替换数组中的元素值

<?php $files = array();foreach (glob("/www/wwwroot/5.com/*.jpg") as $file) { $files[] = $file;} $ss =str_replace('/www/wwwroot/5.com/','5.com.com/',$files); print_r($ss); php批量替换数组中的元素值 原文地址:https://www.cnblogs.com/ysbl/p/12264462.html

linux下批量替换文件内容

linux下批量替换文件内容 1.网络上现成的资料 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` linux sed 批量替换多个文件中的字符串 sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir` 例如:替换/home下所有文件中的www.admin99.net为admin99.net sed -i "s/www.admin99.net/a

Linux下批量替换文件内容方法

1:查找find . -type f -name "*.html"|xargs grep ‘yourstring’ 2:查找并替换find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' perl -pi -e在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的Perl 脚本那样运行该代码.从命令行中使用Perl 能够帮助实现一些强大的.实时的转换.认真研究正则表达式,并正确地使用,将会为您省去大量