相关疑难解决方法(0)

使用Perl逐行连接两个文件有多少种不同的方法?

假设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)

perl concatenation

5
推荐指数
3
解决办法
5089
查看次数

使用awk在文件上附加列

我有从标准输出到达的数据列(在我的情况下是对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?

此解决方案: 向文件添加新列 会生成一个空表.

bash awk

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

awk ×1

bash ×1

concatenation ×1

perl ×1