linux文件字符替换
A. linux查找和替换目录下所有文件中字符串
linux查找和替换目录下所有文件中字符串单个文件中查找替换很简单,就不说了。文件夹下所有文件中字符串的查找替换就要记忆了,最近部署几十台linux服务器,记录下总结。查找文件夹下包含字符串的文件例:查找/usr/local目录下所有包含rubyer.me的文件。1
grep
-lr
'rubyer.me'
/usr/local/*vim替换单个文件中所有字符串方法例:替换当前文件中所有old为new
www.shiwu.com
1
:%s/old/new/g2#%表示替换说有行,g表示替换一行中所有匹配点。
替换文件夹下包含字符串的文件sed结合grep例:要将目录/www下面所有文件中的zhangsan都修改成lisi,这样做:1
sed
-i
s/old/new/g
`grep
old
-rl
/www`作者
skq
B. linux如何替换文件指定行的特定位置字符串
可以通过Shell脚本替换字符串方式,如果知道第几行,格式如下:
<string id="str_ig_ghjjk">hello</string>
字符串内容可能是任意字符串,如何把>和<中间的字符串替换为我的字符串比如world
具体例子:
比如要替换第128行
sed -i '128s/>.*</>world</' test.txt
这样子
C. 总结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/foo/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 各个Linux详细命令介绍及应用可如下进行查找
D. linux 将字符串中的斜线替换成空格
1. 如果是文件中的替换:sed -i "s/字符串/\ /g" 文件名
2.如果是vi中的替换是:%s/字符串/ /g 然后回车