perl 对源文件内容修改 方法整理
1, 利用Tie::File模块来直接对文件内容进行修改。
#!/usr/bin/perl -w my $std="F160";
my $fast="FAST"; my $file=shift @ARGV;
updatefile2($file); sub updatefile2 {
if(defined($file)) { use Tie::File;
tie my @contents, 'Tie::File', "$file" or die "can't open $!\n";
for(@contents){
s/(.*[,])$std([,].*)/${}$fast${}/g
}
untie @contents; exit ;
} else {
print "please provide file name!\n";
}
2, 直接命令:
perl -pi -e 's/(.*[,])$std([,].*)/${1}$fast${2}/g' $file
3, 文件小的话,读取修改后再覆盖进去:
sub updatefile3 {
open FILE, $file or die "$!";
my @oldfile=<FILE>;
close FILE;
foreach(@oldfile) {
s/,$std,/,$fast,/g;
#s/,$fast,/,$std,/g;
}
open FILE, ">", $file or die "$!";
print FILE @oldfile;
close FILE;
}
4, 通过创建临时文件方式:
sub updatefile1 {
if(defined($file)) {
my $buffer="$file buffer"; # save the new data
my $bak = "$file.bak"; #back up the old data
open OPENFILE, "<", "$file" or die "can not open file:$!\n";
open OPENFILEE, ">", "$buffer" or die "can not open file:$!\n";
$^I=".bak";
while(<OPENFILE>) {
chomp;
s/,$std,/,$fast,/g;
#s/,$fast,/,$std,/g;
print "$_\n";
print OPENFILEE "$_\n" or die "can not write to $buffer: $!";
}
close OPENFILE; close OPENFILEE;
rename("$file", "$bak") or die "can not rename $file to $bak: $!";
rename("$buffer", "$file") or die "can not rename $buffer to $file: $!";
} else {
print "please provide file name!\n";
} }
5,一行一行的修改:
比如x.txt内容如下:
hello
world!
执行下面这个程序:
open(FH,"+<x.txt");
$line=<FH>;; #跳过第1行
$pos=tell(FH); #记录第2行起始位置
$line=<FH>;; #读入第2行内容
$line=~s/world/cosmos/; #进行一些更改
seek(FH,$pos,SEEK_SET); #重新定位到第2行起始位置
print FH $line; #更新第2行内容
close(FH);
然后x.txt就是这样了:
hello
cosmos!
要注意的地方就是更新文件时要用"+<"打开。
perl 对源文件内容修改 方法整理的更多相关文章
- Eclipse修改方法内容不用重启Jetty服务器
我Eclipse以前DEBUG模式时,修改方法里的内容是不用重启的, 现在修改方法里是一行代码都要重启服务器了,很麻烦,速度慢了,找了百度,那些方法对我不合适,可能遇到的问题不一样. 也许会合适遇到和 ...
- Ruby数组方法整理
数组方法整理 方法列表: all().any().none()和one():测试数组中的所有或部分元素是否满足给定条件.条件可以是语句块中决定,也可以是参数决定 append():等价于push() ...
- SharePoint 2013备份方法整理
关于SharePoint备份 SharePoint的备份是一个数据副本,主要用于在系统出现故障后还原和恢复该数据. 备份的工具主要有以下几种(写的不全,欢迎补充.) SharePoint管理中心的备份 ...
- Magento后台手动修改订单状态方法及手动修改方法php
订单详细内容页手动修改订单状态方法: 打开此文件:app\design\adminhtml\default\default\template\sales\order\view\history.phtm ...
- JavaScript动态改变表格单元格内容的方法
本文实例讲述了JavaScript动态改变表格单元格内容的方法.分享给大家供大家参考.具体如下: JavaScript动态改变表格单元格的内容,下面的代码通过修改单元格的innerHTML来修改单元格 ...
- centos网卡eth1变成eth0修改方法
centos网卡eth1变成eth0修改方法 2013年03月29日 ⁄ Linux基础 ⁄ 共 406字 ⁄ 暂无评论 ⁄ 被围观 8,266 views+ 虚拟化中,从模板克隆出来的虚拟机网卡都会 ...
- Linux重启inotify配置max_user_watches无效被恢复默认值8192的正确修改方法
Linux下Rsync+inotify-tools实现数据实时同步中有一个重要的配置就是设置Inotify的max_user_watches值,如果不设置,当遇到大量文件的时候就会出现出错的情况. 一 ...
- 在WebBrowser中执行javascript脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码
[实例简介] 涵盖了几种常用的 webBrowser执行javascript的方法,详见示例截图以及代码 [实例截图] [核心代码] execScript方式: 1 2 3 4 5 6 7 8 9 1 ...
- win7_32位安装MySQL_5.6以及密码修改方法
1.下载mysql: http://www.xiazaiba.com/html/361.html 2.安装 方便起见,全部默认下一步吧,原理一个样,最后安装到: 3.配置环境变量 我这里添加的是 C ...
随机推荐
- java和Javascript的区别
1 首先,这两个家伙没有任何的血缘关系,java是是由Sun 公司于1995年5月推出的,而javascript是于1995年由Netscape公司设计实现而成的,由于Netscape公司与Sun公司 ...
- CSS :hover伪类选择定义和用法
伪类选择符E:hover的定义和用法: 设置元素在其鼠标悬停时的样式.E元素可以通过其他选择器进行选择,比如使用类选择符.id选择符.类型选择符等等.特别说明:IE6并非不支持此选择符,但能够支持a元 ...
- EXT学习之——获取下拉框combobox的值与显示名
//申请科室 var comboboxdept = new Ext.form.ComboBox({ xtype: "combobox", name: "Gender&qu ...
- JAVA 多线程和并发学习笔记(一)
一.进程与线程 1. 进程 当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中的程序.进程是操作系统进行资源分配和调度的一个独立单位.进程的三个特征: 独立性 独立存在的实体,每个进程都有 ...
- js复制input 框中的值
function copy(){ var Url2=document.getElementById("copyValue"); Url2.select(); document.ex ...
- 关于php跨域cookie共享使用方法
A 服务器所在的域:a1.main.com,A 有应用 main.phpB 服务所在的域:b1.test.com,B 有应用 test.php 1.在 main.php 里设置 cookie 的时候, ...
- 转:RTC搭建android下三层应用程序访问服务器MsSql-客户端
原文:http://www.cnblogs.com/delphi007/p/3346084.html android下stringgrid已知问题: 通过点击时获取对应行的值有问题,在win下调试正常 ...
- Hadoop HDFS编程 API入门系列之从本地上传文件到HDFS(一)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs5; import java.io.IOException; import ja ...
- 几篇关于VisualStudio的调试工具文章
现代的软件变得日益复杂,强大的调试功能也变得日益重要起来.在VisualStudio的最近几个版本中,在调试工具方面也是增强了不少的,本文转录了几个微软官方介绍的一些新增的调试功能的文章,如果能很好的 ...
- 【226】C# 相关功能实现代码
目录: 1. 实现代码的等待操作 2. 实现文件夹/文件打开操作 3. 建立事件模板,然后调用 4. 用代码在Form中写控件,同时可以编写控件数组 5. 用代码执行事件 1. 实现代码的等待操作 ...