您的位置:首页 > 其它

正则表达式使用笔记——用perl和sed批量修改配置信息

2012-07-03 10:26 295 查看
测试程序时,遇到一个配置文件需要修改,该配置文件中包含信息200多条,手动修改不知道要改到何年何月,所以自然而然地想到写个脚本来处理这些事情。

关于sed可参考:http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/sed.htm。或者直接问man也行。

1、将所有-w:*** -h:***改成-w:0 -h:0(其中***全部是数字)

本来想用perl写脚本,突然想到sed 一条命令即可解决,如下:

sed -i 's/-w:[0-9]* -h:[0-9]*/-w:0 -h:0/g' file1.cfg


很简单的正则表达式,无需多解释了。

2、去掉中间路径,如类似/mydir/xxx/xxxx/file.txt,去掉所有的xxx

sed -i 's/output.*\\\(.*\.txt\)/output\\\1/g' file1.cfg


模式匹配串:

output.*\\\(.*\.txt\),前两个\\代表一个'\'字符,第三个\和(一起组成一个'(',第四个\是'.'的控制字符,第五个是)的控制字符;

也就是说,系统看到的实际上是:output.*\(.*.txt)。

前面两个'.'匹配空格外所有字符,最后一个就纯粹是文件名扩展名前的点了。

目标串:

前两个\\代表一个'\'字符,第三个与1组成一个'\1',用来捕获模式串中()中的内容

这样即只保留最后一个'\'和'.txt'之间的内容,即文件名,而把中间的路径全部去掉了。

3、从完整目录名中提取文件名

这个是用perl实现的,如下:

if (/\\[^\\]+\.txt/)
{
$temp = $&;
}


正则表达式中的[^\\]+表示包含1个或多个不为‘\’的字符,$&表示匹配串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐