小编sha*_*haq的帖子

在Linux上删除多个文件的部分文件名

我想从当前目录中的所有文件名中删除test.extra

for filename in *.fasta;do 

    echo $filename | sed \e 's/test.extra//g'

done
Run Code Online (Sandbox Code Playgroud)

但它抱怨没有创建file.echo是确保它正确列出.

linux bash shell

40
推荐指数
4
解决办法
7万
查看次数

迭代地在Perl中的匹配行之后抓取多行?

我想要一个哈希结构,每个以>开头的行是键,而直到下一个>的行是该键的值:

while (<DATA>) {
    $line1 = $_;
    chomp($line1);

    if ($line1 =~ /^>/) {
        while (<DATA>) {
            last if $line1 =~ /^>/;
            $value .= $_;
        }
        $hash{$line1} = $value;
    }
}

foreach my $key(%hash) {
    print "$key :$hash{$key}\n";
}

__DATA__
>label1 
line1\n
line2\n
>label2
line1\n
line2\n
Run Code Online (Sandbox Code Playgroud)

perl hash pattern-matching

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

在Perl中取消引用字符串

我在Perl子查找文件中有一个子程序,我必须传递一个引用值"*/*"作为输入参数,因为它没有引用而抱怨,另一方面在我的子程序中我需要它不加引号(可能是!)问题是我打印值检查,我没有看到任何引用,或任何事情,但可能有一些特殊的隐藏字符或我不知道的东西?当我直接使用*/*时,我的代码正常工作,但是当我将它作为输入参数传递时,我的代码是否正常你有什么想法?

sub findfiles {

    $dirname=$_[0];
    my @temp = grep {-f} <$dirname>;
    print @temp;       

}
&findfiles("*/*"); doesnot work

but 
   sub findfiles {

    $dirname=$_[0];
    my @temp = grep {-f} <*/*>;
    print @temp;       

}
Run Code Online (Sandbox Code Playgroud)

做它的工作

perl

2
推荐指数
1
解决办法
129
查看次数

访问perl中的文件

在我的脚本中,我正在处理打开文件和写入文件.我发现我尝试打开的文件存在一些问题,文件存在,它不是空的,我正在将正确的路径传递给文件句柄.

我知道我的问题可能听起来很奇怪但是当我调试我的代码时,我在我的脚本中放入以下命令来检查一些文件

system ("ls");
Run Code Online (Sandbox Code Playgroud)

然后我的脚本运行良好,当它被删除它不再正常工作.

 my @unique = ("test1","test2");
 open(unique_fh,">orfs");
 print unique_fh @unique ;
 open(ORF,"orfs")or die ("file doesnot exist");
 system ("ls");
    while(<ORF>){
    split ;
    }
    @neworfs=@_ ;
  print @neworfs ;
Run Code Online (Sandbox Code Playgroud)

perl

2
推荐指数
1
解决办法
119
查看次数

制作哈希哈希

我有一个不同行的文件,每行都有一个重复的模式.我需要一个propper数据结构来解析我的文件,例如:

cluster1:gene1(genome1) gene2(genome2) gene3(genome3)
cluster2:gene4(genome4) gene5(genome5)
Run Code Online (Sandbox Code Playgroud)

姓名是任意的.

我曾经想过一个哈希数据结构的哈希

  %hoh=("cluster1" => {
        "gene1"=>"genome1"
        "gene2"=>"genome2"
        "gene2"=>"genome2"
                       },   "cluster2" => {
        "gene4"=>"genome4"
        "gene5"=>"genome5"
                       }
       )
Run Code Online (Sandbox Code Playgroud)

我有两个问题:第一:我如何在每一行中寻找重复的模式?

其次,我如何制作哈希哈希?

编辑:发布Zaid的请求

#!/usr/bin/perl -w
use strict; use warnings;
    my %HoH;
while(<DATA>){
    my $line=$_;
    chomp($line);
    my ( $cluster, $genes ) = split (/:/,$line);

     $HoH{ $cluster } = { split/[( )]+/ , $genes };

  }  
foreach $cluster (keys %HoH){
    print "$cluster: ";
    foreach $genes (keys %{$HoH{$cluster}}){
        print "$genes = $HoH{$cluster}{$genes} ";
    }
    print "\n";
}                                               

__DATA__
cluster1:gene1(genome1) gene2(genome2) gene3(genome3) …
Run Code Online (Sandbox Code Playgroud)

perl hash design-patterns

2
推荐指数
1
解决办法
124
查看次数

标签 统计

perl ×4

hash ×2

bash ×1

design-patterns ×1

linux ×1

pattern-matching ×1

shell ×1