我想从File1(A,B,C,D)的最后一列旁边添加特定的列(a,b,c,D) d)。示例输入和输出如下所示:Perl:将列从一个文件添加到第二个文件的末尾
Input File1:
1 A
2 B
3 C
4 D
Input File2:
11 a
12 b
13 c
14 d
Output:
11 a A
12 b B
13 c C
14 d D
这是我的代码,我在指定替换正则表达式时遇到问题。也许有更好的方法一起做这件事?
#!/usr/bin/perl
my $text = 'file1.txt';
my $column = 'file2.txt';
open IN, '<', $column or die "Can't open '$column' $!";
open TEXT, '<', $text or die "Can't open '$text' $!";
open OUT, '>>', 'output.txt' or die "Can't open 'output.txt' $!";
my @ref = <IN>;
while (my $line = <TEXT>) {
$line =~ s/\s+$/$ref[1]/s;
print OUT $line;
}
更新:无法用perl解析。二手AWK代替:
awk -v f2=file2.txt ' { c = $2; getline < f2; print $0, c; } ' file1.txt > output.txt
谢谢你的脚本。输入文件实际上是相当大的,所以我把它们读入数组中,然后运行脚本,但输出不在3列。插入的列将被放置在具有匹配数值的数据下。 – EA00
我意识到我的问题可能措辞不佳,我编辑了示例输入文件以使其更清晰 – EA00
@ EA00如果您正在将文件读入阵列,您是否确保“chomp”输入?文件中的换行符可能是导致您的怪异输出的原因。 – Zippers