Chinaunix首页 | 论坛 | 博客
  • 博客访问: 544451
  • 博文数量: 203
  • 博客积分: 245
  • 博客等级: 二等列兵
  • 技术积分: 1288
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-16 10:29
文章分类

全部博文(203)

文章存档

2023年(4)

2022年(21)

2021年(7)

2020年(5)

2019年(1)

2018年(6)

2017年(11)

2016年(15)

2015年(52)

2014年(37)

2013年(26)

2012年(18)

我的朋友

分类: LINUX

2013-05-10 16:37:29

递归替换某目录下所有文件(含子目录)中字串“AAA”为“BBB”,全字符匹配,区分大小写:
find /test/ -type f -exec sed -i 's/\bAAA\b/BBB/g' {} +
PS:不区分大小写是把g改成i: find /test/ -type f -exec sed -i 's/\bAAA\b/BBB/i' {} +
\b...\b代表全字符匹配,去掉2个\b
,则就不是全字符匹配

把AAA,CCC,DDD都替换为BBB(全字符匹配,区分大小写):
find /test/ -type f -exec sed -ri 's/\bAAA|CCC|DDD\b/BBB/g' {} +
一次替换多个字串:
has_macro="AAA"
has_macro="$has_macro|DDD"
has_macro="$has_macro|CCC"
find test/ -type f -exec sed -ri "s/\b$has_macro\b/BBB/g" {} +

sed -ri 's/(region=)[^&]+/\1us/' [filepath]        //讲file该行中...?ion=ca&...的值改为us
cat DFT_CFG_FILE | sed 's/.*region=\([^&]\+\).*/\1/'          //获取...?ion=ca&...中的ca

sed -i '/XXX/d' [file]    // 用sed 删除file中包含XXX的所有行
sed -i '3,8d' [file]     //删除file中第3到8行的内容
sed -i "s/xxx/yyy/g" [file]    //用sed把文件中xxx替换为yyy

g/xxx/d,删除包含xxx的行

v/xxx/d,删除不含xxx的行
sed -i 's/\(.*=\).*/\1/' filename          //删除filename文件中每行=号后面的所有字符串

:%s/xxx//gn,统计xxx个数,n表示只报告匹配的个数而不进行实际的替换。

:1,%s/要被替换的字串/替换为的子串/g

命令:%s/\s\+$//g
可以删除行尾多余的空格和tab符号。
命令:%s/ *$//g
/和*中间有空格,只能删除行尾空格,对于tab不能删除


删除每行最后2个字符:第2个 $前有几个“.”就代表要删除几个字符。
:1,$s/..$//
删除每行最前2个字符:^后有几个“.”就代表要删除几个字符。

:%s/^..//

:% s/^.\{4\}//g 将当前缓冲区的所有行的前4个字符删除

按键操作:
注释:ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如"#",再按Esc,就会全部注释了。 删除:先按v,进入visual模式,横向选中列的个数(如"#"注释符号,需要选中两列),再按Esc,再按ctrl+v 进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d, 就会删除注释符号(#)。 PS:当然不一定是shell的注释符"#",也可以是"//",或者其他任意的字符;vim才不知道什么是注释符呢,都是字符而已。 使用替换命令: :% s/^/\/\//g     在全部内容的行首添加//号注释 :2,50 s/^/\/\//g  在2~50行首添加//号注释

:2,50 s/^\/\///g  在2~50行首删除//号


每行的行首都添加一个字符串:%s/^/要插入的字符串

每行的行尾都添加一个字符串:%s/$/要插入的字符串

解释:

% 代表针对被编辑文件的每一行进行后续操作 $ 代表一行的结尾处 ^ 代表一行的开头处


统计次数

在所有行中查找 字符串 出现的次数:
:%s/字符串/&/gn
在m和n行之间查找 字符串 出现的次数
:m,ns/字符串/&/gn




阅读(1296) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~