gpt4 book ai didi

perl - 如何从一个文件中检索一组两行,并从另一个文件引用第一行?

转载 作者:行者123 更新时间:2023-12-04 18:23:50 25 4
gpt4 key购买 nike

我有两个文件

$猫文件 1
索引1注释1
A B C D
索引2注释2
efgh
索引3注释3
希克
索引4注释4
lmno
索引5注释5
pqrs


$猫文件2
索引1
索引3
索引5

我想要得到的是文件 1 中的行列表以及检索到的每一行之后的行,如下所示。

索引1注释1
A B C D
索引3注释3
希克
索引5注释5
pqrs

我目前的解决方案是使用 grep 及其"file"标志grep -A 1 --file="file2" file1 | awk '!/--/'
但我想知道是否有更优雅的解决方案。当文件很大时,当前的解决方案需要很长时间

最佳答案

#!/usr/bin/env perl

use strict; use warnings;
use autodie;

my %to_index;

my ($annotations_file, $index_file) = @ARGV;

open my $index, '<', $index_file;

while (my $line = <$index>) {
next unless $line =~ /\S/;
chomp $line;
$to_index{ $line } = undef;
}

close $index;

open my $annotations, '<', $annotations_file;

while (my $line = <$annotations>) {
next unless $line =~ /\S/;
my ($keyword) = ($line =~ /^(\S+)/);
if (exists $to_index{ $keyword }) {
print $line;
print scalar <$annotations>;
}
}

close $annotations;

关于perl - 如何从一个文件中检索一组两行,并从另一个文件引用第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10145742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com