我能够生成包含以下内容的哈希:
// ==UserScript==
// @name _YOUR_SCRIPT_NAME
// @match http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant GM_setClipboard
// ==/UserScript==
document.addEventListener ( "keydown", function (i) {
var selectLink = $('a').eq (8); // The link by index
var targetLink = selectLink.text ().trim (); // The link text
if (i.keyCode === 106 && i.shiftKey) // Shift+Num*
{
GM_setClipboard (targetLink); // Copy to clipboard
}
} );
我有一个包含以下内容的文本文件:
AAAA => AAAAAAAA
TTTT => TTTTTTTT
GGGG => GGGGGGGG
CCCC => CCCCCCCC
我希望能够打开文本文件,读取每一行,并搜索行的内容以匹配哈希中的键。如果有匹配项,我想在文本文件中特定于该行的文件中打印相应的值。我跳到第一个文件的输出将是:
AAAA AAAA
GGGG
TTTT TTTT TTTT
CCCC CCCC
第二个文件的输出是:
>AAAA
AAAAAAAA
>AAAA
AAAAAAAA
我知道有办法实现这一目标,但我不知所措。任何帮助将非常感谢。谢谢!
到目前为止,这是我的代码。请注意,我设置为只写入一个文件,但我需要写入与前面提到的文本文件中的行数一样多的文件(数百到数千)。
>GGGG
GGGGGGGG
因此,这使我可以一次访问每一行,但现在我只需要将行中的所有元素与哈希中的键匹配,并将值打印到文件中。
答案 0 :(得分:0)
我会这样做:
这并没有告诉您如何将这些文件打印到自己的文件中,但它应该可以帮助您。也许这是另一个问题?
open my $infile, '<', 'in.txt' or die $!;
my %hash = (
AAAA => 'AAAAAAAA',
TTTT => 'TTTTTTTT',
GGGG => 'GGGGGGGG',
CCCC => 'CCCCCCCC'
);
while(<$infile>){
chomp;
my @fields = split;
if ($hash{$fields[0]}){
foreach (@fields){
print ">$fields[0]\n";
print "$hash{$fields[0]}\n";
}
print "\n";
}
}
>AAAA
AAAAAAAA
>AAAA
AAAAAAAA
>GGGG
GGGGGGGG
>TTTT
TTTTTTTT
>TTTT
TTTTTTTT
>TTTT
TTTTTTTT
>CCCC
CCCCCCCC
>CCCC
CCCCCCCC
答案 1 :(得分:0)
这似乎符合你的要求。
#!/usr/bin/perl
use strict;
use warnings;
my %convert = (
AAAA => 'AAAAAAAA',
TTTT => 'TTTTTTTT',
GGGG => 'GGGGGGGG',
CCCC => 'CCCCCCCC',
);
while (<>) {
my @tokens = split;
open my $out, '>', "line_$..out" or die $!;
foreach my $token (@tokens) {
if (exists $convert{$token}) {
print $out ">$token\n$convert{$token}\n";
}
}
}
你运行它,传入输入文件的名称(我真的不喜欢不必要的硬编码文件名)。您可以通过编辑对open()
。