免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2375 | 回复: 7
打印 上一主题 下一主题

per开始行加入字符 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-08 15:25 |只看该作者 |倒序浏览
怎样在文本开始第一行加入 .EQUATION  第二行加  .MEGA  第三行加入   .param

求职 : Linux运维
论坛徽章:
3
戌狗
日期:2015-01-11 13:27:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯纪念徽章
日期:2015-05-08 15:03:30
2 [报告]
发表于 2015-01-09 11:04 |只看该作者
本帖最后由 donalds2008 于 2015-01-09 11:08 编辑
  1. open FH_IN, '<', 'in.txt';#
  2. open FH_OUT, '>>', 'out.txt';
  3. my @content = split /\n/,do {local $/; <FH> };
  4. close FH_IN;
  5. my $str;
  6. foreach my $row (0..$#content){
  7.    ($str) = ( $content[$row] =~ s/^/\.EQUATION/) if  $row=0;
  8.   ($str) = ( $content[$row] =~ s/^/\.MEGA/) if  $row=1;
  9.   ($str) = ( $content[$row] =~ s/^/\.param/) if  $row=2;
  10.    print FH_OUT $str."\n";
  11. }
  12. close FH_OUT;
复制代码

求职 : Linux运维
论坛徽章:
3
戌狗
日期:2015-01-11 13:27:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯纪念徽章
日期:2015-05-08 15:03:30
3 [报告]
发表于 2015-01-09 11:12 |只看该作者
或者用sed
  1. sed -i '1s/^/\.EQUATION/' in.txt
  2. sed -i '2s/^/\.MEGA/' in.txt
  3. sed -i '3s/^/\.param/' in.txt
复制代码

论坛徽章:
0
4 [报告]
发表于 2015-01-09 17:09 |只看该作者
谢谢 大牛啊  如果下面我要替换所有的 n18ll为  n13  那按照第一种该怎么写呢

论坛徽章:
0
5 [报告]
发表于 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  请问大牛什么原因阿

求职 : Linux运维
论坛徽章:
3
戌狗
日期:2015-01-11 13:27:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯纪念徽章
日期:2015-05-08 15:03:30
6 [报告]
发表于 2015-01-09 18:46 |只看该作者
本帖最后由 donalds2008 于 2015-01-09 18:48 编辑

不好意思,试试这个。
  1. $str=  $content[$row];
  2. ($str=~s/^/\.EQUATION/) if  $row=0;
  3.   ($str=~s/^/\.MEGA/) if  $row=1;
  4.   ($str=~s/^/\.param/) if  $row=2;
复制代码
回复 5# 1249068807


   

求职 : Linux运维
论坛徽章:
3
戌狗
日期:2015-01-11 13:27:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯纪念徽章
日期:2015-05-08 15:03:30
7 [报告]
发表于 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++;
}
这样更高效

论坛徽章:
0
8 [报告]
发表于 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP