合并文件的一个小脚本

这个perl程序的功能是:

获取第一个参数所指文件的某些域(由第三个参数指定域),合并到第二个参数所指文件的“右侧”。例如:

1.tmp:

111 222 333

1 2 3

2.tmp:

a b c

aa bb cc

那么新文件的内容是(假设第三个参数是2,3,也就是复制第2和第3个域):

a b c 222 333

aa bb cc 2 3

------------------------------------------------------------------

  1. #!/usr/bin/perl

  2. if($#ARGV != 2) { 
  3.   print "usage: $0 input output fields/n"
  4.   print "examples: $0 1.tmp 2.tmp /"1,2,3/"/n"
  5.   exit(0); 
  6. }

  7. my @fields = split(/,/, $ARGV[2]);

  8. open FILE"$ARGV[0]" or die $!; 
  9. my @lines = <FILE>; 
  10. close FILE;

  11. open FILE"$ARGV[1]" or die $!; 
  12. my @new_lines = <FILE>; 
  13. close FILE;

  14. my $i = 0; 
  15. foreach(@lines){ 
  16.   my @F = split(//s+/, $_); 
  17.   my $line = ""
  18.   foreach(@fields){ 
  19.     $line .= " $F[$_]"
  20.   } 
  21.   chomp($new_lines[$i]); 
  22.   $new_lines[$i] .= " $line/n"
  23.   $i++; 
  24. }

  25. open FILE">$ARGV[1]" or die $!; 
  26. print FILE "@new_lines"
  27. my @new_lines = ; 
  28. close FILE;

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值