假设file1看起来像这样:
bye bye hello thank you
而file2看起来像这样:
chao hola gracias
所需的输出是这样的:
bye bye chao hello hola thank you gracias
我自己已经提出了五种不同的方法来解决这个问题.但我认为必须有更多的方法,可能更简洁,更优雅的方式,我希望我能学到更多很酷的东西:)
以下是我迄今为止所尝试的内容,基于我从之前问题的许多解决方案中学到的内容.此外,我正试图消化或内化我从Llama书中获得的知识.
代码1:
#!perl
use autodie;
use warnings;
use strict;
open my $file1,'<','c:/file1.txt';
open my $file2,'<','c:/file2.txt';
while(defined(my $line1 = <$file1>)
and defined(my $line2 = <$file2>)){
die "Files are different sizes!\n" unless eof(file1) == eof(file2);
$line1 .= $line2;
$line1 =~ s/\n/ /;
print "$line1 \n";
}
Run Code Online (Sandbox Code Playgroud)
代码2:
#!perl
use autodie;
use warnings;
use strict;
open my $file1,'<','c:/file1.txt';
my @file1 = <$file1>;
open …Run Code Online (Sandbox Code Playgroud) 我有从标准输出到达的数据列(在我的情况下是对mysql的调用),我想在每个循环中追加文件中的列.我能怎么做?
Standard output:
a1
a2
....
an
Run Code Online (Sandbox Code Playgroud)
保存在名为table.dat的文件中:
table.dat:
a1
a2
....
an
Run Code Online (Sandbox Code Playgroud)
然后产生另一个输出:
Further standard output:
b1
b2
....
bn
Run Code Online (Sandbox Code Playgroud)
附加到table.dat:
table.dat:
a1 b1
a2 b2
.... ....
an bn
Run Code Online (Sandbox Code Playgroud)
...等等.我可以使用粘贴,但我需要三个步骤:
line producing standard output > tmpfile;
paste prevfile tmpfile > table
mv table prevfile;
Run Code Online (Sandbox Code Playgroud)
是否有更快的方式,也许使用awk?
此解决方案: 向文件添加新列 会生成一个空表.