linux字符串替换命令,Linux系统字符串替换命令详细说明Linux系统中有时候我们需要替换某个很长的字符串该使⽤什么命令呢?下⾯由店铺为⼤家整理了Linux系统字符串替换命令详细说明,希望对⼤家有帮助!
Linux系统字符串替换命令详细说明
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
Linux系统字符串替换的⽅法⼆、直接替换⽂件中的字符串
此法不⽤打开⽂件即可替换字符串,⽽且可以批量替换多个⽂件。
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" ./ ./bak
将当前⽂件夹下和bak中的“shan”都替换为“hua”
linux系统vim编辑器perl -i.bak -pe 's/(\d+)/ 1 + $1 /ge' file1 file2
将每个⽂件中出现的数值都加⼀
Linux系统字符串替换的⽅法三、sed命令下批量替换⽂件内容
格式: sed -i "s/查字段/替换字段/g" `grep 查字段 -rl 路径` ⽂件名-i 表⽰inplace edit,就地修改⽂件
-r 表⽰搜索⼦⽬录
-l 表⽰输出匹配的⽂件名
s表⽰替换,d表⽰删除
⽰例:sed -i "s/shan/hua/g"
把当前⽬录下⾥的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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论