小编Tim*_*and的帖子

Perl 捕获子进程的 STDERR 和 STDOUT

我有正在执行另一个脚本的 Perl 脚本。如何确保在CONNECTION.pl执行时捕获 STDERR 和 STDOUT,以便将其放入父脚本的日志中?波纹管是来自父脚本的代码:

my $systemcmd ='perl bin/CONNECTION.pl "'.$expanded_sql.'" "'.$tmp_file.'" "'.$fetch.'"';

eval {
  my $rc = system($systemcmd );
};

if ($@) {
  $errmsg = $@;
  croak {message=>$errmsg};
  unlink $tmp_file;
} 
Run Code Online (Sandbox Code Playgroud)

shell perl stdout system-calls stderr

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

如何从 Perl 中的散列中获取最小值键

我有能够从哈希值中选择最小值的脚本。

use strict;
use warnings;

use Data::Dumper;
use List::Util qw(min);

my @array = qw/50 51 52 53 54/;

my $time = 1596561300;

my %hash;

foreach my $element(@array){  
    $hash{$time} = $element;
    $time += 6; #based on some condition incrementing the time to 6s
}

print Dumper(\%hash);

my $min = min values %hash; 
print "min:$min\n";
Run Code Online (Sandbox Code Playgroud)

在这里,我能够50从哈希值中的所有值中获取最小值。但是我如何才能获得对应于最小值的哈希键,即1596561300.

perl hash minimum

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

perl 命令行单行查找/替换,但*不*打印不匹配的行?

我想用复杂的正则表达式在命令行上的文件上做一个正则表达式查找和替换,所以我需要 PCRE 和正在使用perl -pe "s/foo/bar"(而不是sed),它在应用后打印出所有行s///,但它也打印不比赛。

是否有一个perl命令行单行不会打印不匹配的行?我知道perl -pe s/foo/bar/ if /foo/,但后来我需要复制正则表达式。有没有可能不重复我自己?

regex perl command-line one-liner

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

在 bash 中的 5,000 个目录中创建 5,000,000,000 个空文件的最快方法

所以我需要在 linux 驱动器上创建 5,000,000,000 个文件 - 空文件。实现这一目标的最快/最有效的方法是什么?

我目前正在尝试:

for dir in /xfs/*/; do seq 1 1000000 | xargs -n1 -I% bash -c 'touch '$dir/file%' ; done;

这是“工作”,尽管非常缓慢。(在 5,000 个目录中创建 1,000,000 个文件)。

有没有更好的方法来实现这一点?(没有遇到参数列表太长的问题)

TIA

bash file-io loops file

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

在 bash 中创建空文件的简写在 zsh 中无法正常工作

在 bash 中,可以使用以下命令创建一个空文件:

> empty_file.txt
Run Code Online (Sandbox Code Playgroud)

在 zsh 中,同样的命令卡住了,需要停止。尽管如此,文件还是会被创建。

我想知道是什么导致了这种行为和/或如何使它类似于 bash?

编辑:错别字。

linux macos bash zsh io-redirection

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

ruby 在多个数组上映射一个函数

我有 2 个数组

   asc = [0, 1, 2, 3, 4, 5]
   dsc = [5, 4, 3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)

我想要一个新数组,它是将 asc 和 dsc 中的每个相应项相乘的结果

我已经习惯了 Clojure map

(map #(* %1 %2) asc dsc) ;=> (0 4 6 6 4 0)
Run Code Online (Sandbox Code Playgroud)

它们在 Ruby 中是否等效,在 Ruby 中执行此操作的惯用方法是什么?

我是 Ruby 的新手,但它似乎有非常好的简洁解决方案,所以我想我错过了一些东西。

我只是写:

i = 0
res = []

while i < asc.length() do
  res.append(asc[i] * dsc[i])
end
Run Code Online (Sandbox Code Playgroud)

ruby arrays iteration loops idioms

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

bash 脚本 - 在 cat 中使用和扩展变量

在我的 bash 脚本中,我有这个:

myapphome=/home/username/Documents/myapp

cat << 'EOT' > "$myapphome"/some.properties
dir.root="$myapphome"/app_data
EOT
Run Code Online (Sandbox Code Playgroud)

预期在 some.properties 中:

dir.root=/home/username/Documents/myapp/app_data
Run Code Online (Sandbox Code Playgroud)

但实际上是这样的:

dir.root="$myapphome"/app_data
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?我的意思是我想在我的 some.properties 文件中扩展 $myapphome 。

variables bash heredoc string-interpolation

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

如何将 {} 显示为 python f 字符串的一部分

有什么办法可以将 {} 显示为 f 字符串的一部分,因为它在 f 字符串中具有特殊含义。换句话说:

如果运行print(f"hello world {}"),我想要这样的结果hello world {}

我尝试的解决方案是:print(f"hello world \{\}"). 但它没有用。

非常感谢您的帮助

python curly-braces python-3.x f-string

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

使用 R 进行下一代测序 vcf 文件

我是 R 初学者。我正在使用 R 来分析我的大型下一代测序 vcf 文件,但遇到了一些困难。我已将非常大的 vcf 文件作为数据框(2446824 个观测值,共 177 个变量)导入,并仅使用我感兴趣的 3 个样本(2446824 个观测值,共 29 个变量)制作了一个子集。

我现在希望进一步减少尺寸(将行数减少到 200000 左右)。我一直在尝试使用 grep,但无法让它工作。我得到的错误是

Error in "0/1" | "1/0" : 
   operations are possible only for numeric, logical or complex types
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的文件的一个小示例部分。

Chr Start   End Ref Alt Func.refGene    INFO    FORMAT  Run.Sample1 Run.Sample2 Run.Sample3
489 1   909221  909221  T   C   PASS    GT:AD:DP:GQ:PL  0/1:11,0:11:33:0,33,381     ./.     ./.
490 1   909238  909238  G   C   PASS    GT:AD:DP:GQ:PL  0/1:11,6:17:99:171,0,274    0/1:6,5:11:99:159,0,116     1/1:0,15:15:36:441,36,0
491 1   909242  909242  A   G   PASS    GT:AD:DP:GQ:PL  0/1:16,4:13:45:0,45,532 …
Run Code Online (Sandbox Code Playgroud)

regex r bioinformatics sequencing vcf-variant-call-format

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

在 bash 中为 txt 文件中的每个匹配模式添加编号

您好,我有一个文件,例如

文件.txt

>LO_D
AHAHAHAHHAHAH
>LEIO_DS
DHHDHDHDHDH
>LODJ_jdjd
DJDJHDHDHD
>LO_D
AAAAAAA
>LO_D
HHAHAHAHAHAH
Run Code Online (Sandbox Code Playgroud)

我想在每个>LO_D元素之后添加一个数字

然后我应该得到:

>LO_D_1
AHAHAHAHHAHAH
>LEIO_DS
DHHDHDHDHDH
>LODJ_jdjd
DJDJHDHDHD
>LO_D_2
AAAAAAA
>LO_D_3
HHAHAHAHAHAH
Run Code Online (Sandbox Code Playgroud)

regex awk grep sed

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