【导语】“淘小宝”通过精心收集,向本站投稿了6篇Linux批量替换某种类型文件中的字符串sed和grep命令使用,下面是小编收集整理后的Linux批量替换某种类型文件中的字符串sed和grep命令使用,供大家参考借鉴,希望可以帮助到有需要的朋友。
- 目录
篇1:Linux批量替换某种类型文件中的字符串sed和grep命令使用
今天在修改rpm打包的spec配置文件时,遇到一个问题就是:需要将100个左右源代码中的spec配置文件中的Release一行中的发布版本号使用宏变量%{_release}进行替换,
如果要手工修改需要修改100多次,但是使用sed和grep命令很简单:
[plain]
sed -i “s/Release: 1/Release: %{_release}/g” 'grep Release: 1 -rl --include=“*.spec” ./'
以上的命令有待求证,暂时这么写了,明天确认一下再加以修改吧。
Linux下批量替换多个文件中的字符串的简单方法,
用sed命令可以批量替换多个文件中的字符串。
用sed命令可以批量替换多个文件中的字符串。
sed -i “s/原字符串/新字符串/g” `grep 原字符串 -rl 所在目录`
例如:我要把mahuinan替换为huinanma,执行命令:sed -i “s/mahuinan/huinanma/g” 'grep mahuinan -rl /www'
这是目前linux最简单的批量替换字符串命令了!
具体格式如下:
sed -i “s/oldString/newString/g” `grep oldString -rl /path`
实例代码:sed -i “s/大小多少/日月水火/g” `grep 大小多少 -rl /usr/aa`
sed -i “s/大小多少/日月水火/g” `grep 大小多少 -rl ./`
篇2:dedecms使用SQL命令批量替换指定字符串的方法
这篇文章主要为大家介绍了dedecms使用SQL命令批量替换指定字符串的方法,可以实现针对指定字符串的精确替换功能,是非常实用的技巧,需要的朋友可以参考下
几年前做的一个QQ站现在把资料整过来了,但是发现有些litpic缩略图中的路么地址不对了,以前我都是使用phpmyadmin替换,今天我发现可以直接使用SQL命令运行器来解决,下面来看我一个替换litpic中指定路径地址.
查询指定 archives 表:
代码如下:select * from 你的表前缀_archives limit 1
这个表是主表了,我们查询一条出来看看,结果如下.
运行SQL:select * from 你的表前缀_archives where id =1466,共有1条记录,最大返回100条.
记录:1
id:1466
typeid:110
typeid2:0
sortrank:1238913636
flag:c,p
ismake:1
channel:1
arcrank:0
click:33119
money:0
title:可爱的动态nomoQQ表情图片
shorttitle:
color:
writer:
source:
litpic:upload.jb51.net/allimg/c090405/123Y13349440-1SH6.jpg
pubdate:1238913636
senddate:1238913636
现在我们可以锁定到id =1466 记录:
代码如下:select litpic from 你的表前缀_archives where id =1466;
执行结果:
运行SQL:
代码如下:select litpic from 你的表前缀_archives where id =1466;
共有1条记录,最大返回100条.记录:1
litpic:upload.jb51.net/allimg/c090405/123Y13349440-1SH6.jpg
好了现在我们需要把litpic 字段中的upload.jb51.net 替换成 /uploads/ 这种,这些我们可以使用update replace来实现.
例子:
代码如下:update 你的表前缀_archives set `litpic`=replace(litpic, ‘upload.jb51.net‘, ‘/uploads‘) WHERE id=1466
我们来执行看看结果,成功执行1个SQL语句,好现在我们来查询一下执行结果是不是我们想要的,再执行:
代码如下:select litpic from 你的表前缀_archives where id =1466;
确定执行提示:
运行SQL:
代码如下:select litpic from 你的表前缀_archives where id =1466;
共有1条记录,最大返回100条.记录:1
litpic:/uploads/allimg/c090405/123Y13349440-1SH6.jpg
看提示没有错误,我们在地址栏看看图片正确,查看是没有问题了,现在我们来批量替换.
代码如下:select litpic from 你的表前缀_archives where litpic like ‘%upload.jb51.net%‘
这样我们查一下是为了防止后面替换不会替换没有upload.jb51.net了,也防止了sql出错导致数据库全部替换掉了.
代码如下:update 你的表前缀_archives set `litpic`=replace(litpic, ‘upload.jb51.net‘, ‘/uploads‘) where litpic like ‘%upload.jb51.net%‘
成功执行1个SQL语句,我们再查一下看.
运行SQL:
代码如下:select litpic from 你的表前缀_archives where litpic like ‘%upload.jb51.net%‘
无返回记录!希望本文所述对大家的dedecms建站有所帮助,
篇3:linux下perl,sed,shell批量替换文件内容linux操作系统
在linux中要替换文件里面的内容我们有三种方法可用,也就是说有三个命令它们分别为perl,sed,shell了,下面我们来看演示实例,
方法1:
这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我需要把这些资源库的url统一指定到nexus本地中央库.
手 工一个个改文件配置有点不太实际,所以google了一下,找到批量替换文件内容的好方法,命令结构如下:
find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'下面这个例子就是将当前目录及所有子目录下的所有pom.xml文件中的”www.111cn.net/phper/php.html“ 替换为”www.111cn.net“.
find -name 'pom.xml' | xargs perl -pi -e 's|www.111cn.net/phper/php.html|www.111cn.net|g'这里用到了Perl语言,
perl -pi -e 在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的Perl 脚本那样运行该代码.
从命令行中使用Perl 能够帮助实现一些强大的、实时的转换。认真研究正则表达式,并正确地使用,将会为您省去大量的手工编辑工作。
find -name 'pom.xml' | xargs perl -pi -e 's|repo1.maven.org/maven2|localhost:8081/nexus/content/groups/public|g'
方法2:
Linux下批量替换多个文件中的字符串的简单方法。用sed命令可以批量替换多个文件中的字符串,
用sed命令可以批量替换多个文件中的 字符串。
sed -i “s/原字符串/新字符串/g” `grep 原字符串 -rl 所在目录`
例如:我要把mahuinan替换 为huinanma,执行命令:
sed -i “s/mahuinan/huinanma/g” 'grep mahuinan -rl /www'
这是目前linux最简单的批量替换字符串命令了!
具体格式如下:
sed -i “s/oldString/newString/g” `grep oldString -rl /path`
实例代码:sed -i “s/大小多少/日月水火/g” `grep 大小多少 -rl /usr/aa`
sed -i “s/大小多少/日月水火/g” `grep 大小多少 -rl ./`
方法3:
在日程的开发过程中,可能大家会遇到将某个变量名修改 为另一个变量名的情况,如果这个变量是一个局部变量的话,vi足以胜任,但是如果是某个全局变量的话,并且在很多文件中进行了使用,这个时候使用vi就是 一个不明智的选择。这里给出一个简单的shell命令,可以一次性将所有文件中的指定字符串进行修改:
grep “abc” * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/abc/abcde/g'
补充说明:
sed -i “s/oldString/newString/g” `grep oldString -rl /path`
对多个文件的处理可能不支持,需要用 xargs, 搞定。
变种如下:
grep oldString -rl /path | xargs sed -i “s/oldString/newString/g”
注意:
在 `grep oldString -rl /path` 中 ` 为1前边的翻引号`,而不是enter 前的 '
篇4:linux下批量替换文件中的内容linux操作系统
对于单个文件,使用sed命令很容易做到,如果需要替换某个指定文件夹下所有文件,借助grep和sed组合成一条命令也可以轻松搞定。
grep命令可以查找单个文件或文件夹下文件中的内容,使用参数“r”或“-R”可以递归查找指定文件夹下的所有文件;参数“l”可以让grep输出包含指定字符串的文件名,首次匹配成功后立刻停止对同文件的查询。如果不使用“l“,grep查询单个文件时输出文件中所有包含指定字符串的行,对文件夹查询时则按照“文件名:包含字符串行”的方式输出。
有了上面提到的知识,执行批量替换的命令可以写为:
grep “netingcn” -rl /assign-path | xargs sed -i 's/netingcn/www.netingcn/g'
或
sed -i 's/netingcn/www.netingcn/g' `grep “netingcn” -rl /assign-path`
还有一种比较复杂的写法:
grep “netingcn” * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/netingcn/www.netingcn/g'
其中命令awk用于分割字符串、uniq对结果进行除重,
、网络上现成的资料
格式: sed -i “s/查找字段/替换字段/g” `grep 查找字段 -rl 路径`
linux sed 批量替换多个文件中的字符串
sed -i “s/oldstring/newstring/g” `grep oldstring -rl yourdir`
例如:替换/home下所有文件中的www.111cn.net为111cn.net
sed -i “s/www.111cn.net/111cn.net/g” `grep www.111cn.net -rl /home`
exp:sed -i “s/shabi/$/g” `grep shabi -rl ./`
2、自己额外附加
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出多个文件名而已
篇5:Shell中使用scp命令实现文件上传代码
这篇文章主要介绍了Shell中使用scp命令实现文件上传代码,本文讲解使用scp命令实现名登录上传文件,需要的朋友可以参考下
自从法现 SSH 可以执行远端命令后,ftp 软件也渐渐很少用了,
每次更新服务器代码,都要打包、上传、登录到服务器修改文件权限、更新 Cache 等等,又慢又容易出错,所以做成脚本,一次帮我搞定,自己就点上一根烟坐在电脑面前发呆,要么就玩会儿《植物大战僵尸》啥的,悠闲!
PS: Ant 以及 Phing 用户,你们可以无视了… 我只是喜欢玩 Shell 而已。
代码如下:
#!/bin/sh
HOME=‘/cygdrive/d/public_html/myproject‘
## 先打包本地代码
## 排除如下文件: *.svn, *.bat, upload.sh, cache
## 如果需要 exclude 的文件很多,可以使用参数 --exclude-from=FILE
## 将文件一行行写入 FILE 中
cd $HOME
tar jcf tmp.tar.bz2 * \\
--exclude=*.bat \\
--exclude=*.bz2 \\
--exclude=*.gz \\
--exclude=.svn \\
--exclude=cache \\
--exclude=upload.sh \\
## 通过 SCP 上传文件
scp tmp.tar.bz2 user@your.host.com:/home/public_html/myproject/tmp.tar.bz2
## 执行远程 ssh 命令
## 这里执行了另外一个脚本 load.sh
ssh user@your.host.com
“
cd /home/public_html/myproject
tar jxf tmp.tar.bz2
chown -R web:web *
chmod -R 755 *
sh load.sh
rm -f tmp.tar.bz2
”
## 删除本地文件
rm -f tmp.tar.bz2
echo “Everything is done.”
# 星期一 一月 11, 2010 by Verdana
# vim: set expandtab tabstop=4 shiftwidth=4:
SSH 我配置成了自动登录,可以参考这里,
篇6:Linux系统中sed命令在文件某行前后添加内容的用法
1、简介
MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。
在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。
2、命令格式
md5sum [OPTION]... [FILE]...
3、命令选项
-b 或 --binary :把输入文件作为二进制文件看待。
-t 或 --text :把输入的文件作为文本文件看待(默认)。
-c 或 --check :用来从文件中读取md5信息检查文件的一致性。(不细说了参见info)
--status :这个选项和check一起使用,在check的时候,不输出,而是根据返回值表示检查结果。
-w 或 --warn :在check的时候,检查输入的md5信息又没有非法的行,如果有则输出相应信息。
4、例子
(1)生产一个文件的md5值,如下图所示
(2)检查两个文件是否一样,可以通过比较两个文件的md5值。
(3)判断一个文件是否修改,通过md5来判断
[Linux系统中sed命令在文件某行前后添加内容的用法]
★ linux中利用shell实现批量转换文件编码linux操作系统
★ [转载 命令]FreeBSD 文件和目录查找Unix系统
★ Linux系统使用cp命令报错cp:omitting directory怎么
★ 不需要远程传输文件Linux如何关闭scp和sftp命令
Linux批量替换某种类型文件中的字符串sed和grep命令使用(合集6篇)




