Chinaunix
标题:
per开始行加入字符
[打印本页]
作者:
1249068807
时间:
2015-01-08 15:25
标题:
per开始行加入字符
怎样在文本开始第一行加入 .EQUATION 第二行加 .MEGA 第三行加入 .param
作者:
donalds2008
时间:
2015-01-09 11:04
本帖最后由 donalds2008 于 2015-01-09 11:08 编辑
open FH_IN, '<', 'in.txt';#
open FH_OUT, '>>', 'out.txt';
my @content = split /\n/,do {local $/; <FH> };
close FH_IN;
my $str;
foreach my $row (0..$#content){
($str) = ( $content[$row] =~ s/^/\.EQUATION/) if $row=0;
($str) = ( $content[$row] =~ s/^/\.MEGA/) if $row=1;
($str) = ( $content[$row] =~ s/^/\.param/) if $row=2;
print FH_OUT $str."\n";
}
close FH_OUT;
复制代码
作者:
donalds2008
时间:
2015-01-09 11:12
或者用sed
sed -i '1s/^/\.EQUATION/' in.txt
sed -i '2s/^/\.MEGA/' in.txt
sed -i '3s/^/\.param/' in.txt
复制代码
作者:
1249068807
时间:
2015-01-09 17:09
谢谢 大牛啊 如果下面我要替换所有的 n18ll为 n13 那按照第一种该怎么写呢
作者:
1249068807
时间:
2015-01-09 17:37
open FH_IN, '<', 'in.txt';#
open FH_OUT, '>>', 'out.txt';
my @content = split /\n/,do {local $/; ‘<FH>’ };
close FH_IN;
my $str;
foreach my $row (0..$#content){
($str) = ( $content[$row] =~ s/^/\.EQUATION/) if $row==0;
($str) = ( $content[$row] =~ s/^/\.MEGA/) if $row==1;
($str) = ( $content[$row] =~ s/^/\.param/) if $row==2;
print FH_OUT $str."\n";
}
close FH_OUT;
我这样修改了下 但是结果只出来了 1 请问大牛什么原因阿
作者:
donalds2008
时间:
2015-01-09 18:46
本帖最后由 donalds2008 于 2015-01-09 18:48 编辑
不好意思,试试这个。
$str= $content[$row];
($str=~s/^/\.EQUATION/) if $row=0;
($str=~s/^/\.MEGA/) if $row=1;
($str=~s/^/\.param/) if $row=2;
复制代码
回复
5#
1249068807
作者:
donalds2008
时间:
2015-01-09 20:41
本帖最后由 donalds2008 于 2015-01-09 22:13 编辑
my $row=0;
while(<FH_IN>){
s/^/\.EQUATION/ if $row==0;
其他行类推
print FH_OUT $_;
$row++;
}
这样更高效
作者:
1249068807
时间:
2015-01-12 09:53
谢谢楼上的兄弟 我现在这样写了 写出来了
#!usr/bin/perl -w
my $line =0
open (FH,“ 〉 TESTOUT”)or die “cann't open”;
while(<> ){
$line ++;
if($line ==1)
print FH "\.EQUATION\n";
}
elsif($line ==2)
print FH "\.SCAL\n";
}
else{
print FH "$S_\n";
}
}
3Q very much for donalds2008
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2