免费注册 查看新帖 |

Chinaunix

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

请教高手如何把一个文本的内容加到另一个文本每一行的后面? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-01 19:51 |只看该作者 |倒序浏览
本帖最后由 jun277 于 2013-07-01 19:52 编辑

现在有两个脚本a.txt  b.txt
a.txt的内容                          b.txt的内容
a       num                          h
b       date                          e
c       num                           
d       num                           l
e       num                           o

现在如何能把b的内容合并到a.txt里面或者新生成的c.txt里面,合并后如下形式:
a       num     h
b       date     e
c       num     
d       num     l
e       num     o
   

论坛徽章:
1
CU大牛徽章
日期:2013-03-14 14:08:55
2 [报告]
发表于 2013-07-01 22:11 |只看该作者
写成脚本形式,很简单,不知道一句话怎么写?

论坛徽章:
0
3 [报告]
发表于 2013-07-01 22:31 |只看该作者
回复 2# jun413947139

能写一下脚本或者重要部分,或者思路吗?


   

论坛徽章:
1
CU大牛徽章
日期:2013-03-14 14:08:55
4 [报告]
发表于 2013-07-01 22:34 |只看该作者
  1. #! /usr/bin/perl -w

  2. use strict;
  3. use Tie::File;

  4. my ($file1, $file2) = @ARGV;
  5. tie my @lines1, 'Tie::File', $file1 or die "tie $file1: $!";
  6. tie my @lines2, 'Tie::File', $file2 or die "tie $file1: $!";
  7. my $max = ($#lines1 > $#lines2 ? $#lines1:$#lines2);

  8. for (0..$max) {
  9.     $lines1[$_] .= "    $lines2[$_]";
  10. }

复制代码
自动写在a.txt

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
5 [报告]
发表于 2013-07-02 08:07 |只看该作者
还不如直接用shell  paste

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
6 [报告]
发表于 2013-07-02 22:36 |只看该作者
bikong0411 发表于 2013-07-02 04:07
还不如直接用shell  paste
paste怎么写?大神能写一下吗?

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
7 [报告]
发表于 2013-07-03 10:31 |只看该作者
回复 6# rubyish


    paste a.txt b.txt

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
8 [报告]
发表于 2013-07-03 19:53 |只看该作者
bikong0411 发表于 2013-07-03 06:31
回复 6# rubyish

非常感谢~

论坛徽章:
0
9 [报告]
发表于 2013-07-08 01:58 |只看该作者
本帖最后由 xialeizhou 于 2013-07-08 02:06 编辑

回复 1# jun277

看你举例,你的需求描述不是很清晰,按我理解应该是同时逐行读取两个文件,把文件A的第i行的内容append到文件B的第i行。
代码如下:
use strict;
local $^I = '';
push @ARGV, target_file'; # fileB need to be appended
open(my $fh_org,  '<',  $original_file) or die "Failed to open file $original_file"; # fileA, need to append to fileB
while(<>){
my $content = <$fh_org>;
print $content;
print;
}
close $fh_org;
__END__

论坛徽章:
0
10 [报告]
发表于 2013-07-08 01:59 |只看该作者
回复 8# rubyish


你也在学ruby? 交流一下?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP