我有正在执行另一个脚本的 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) 我有能够从哈希值中选择最小值的脚本。
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.
我想用复杂的正则表达式在命令行上的文件上做一个正则表达式查找和替换,所以我需要 PCRE 和正在使用perl -pe "s/foo/bar"(而不是sed),它在应用后打印出所有行s///,但它也打印不比赛。
是否有一个perl命令行单行不会打印不匹配的行?我知道perl -pe s/foo/bar/ if /foo/,但后来我需要复制正则表达式。有没有可能不重复我自己?
所以我需要在 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 中,可以使用以下命令创建一个空文件:
> empty_file.txt
Run Code Online (Sandbox Code Playgroud)
在 zsh 中,同样的命令卡住了,需要停止。尽管如此,文件还是会被创建。
我想知道是什么导致了这种行为和/或如何使它类似于 bash?
编辑:错别字。
我有 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) 在我的 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 。
有什么办法可以将 {} 显示为 f 字符串的一部分,因为它在 f 字符串中具有特殊含义。换句话说:
如果运行print(f"hello world {}"),我想要这样的结果hello world {}
我尝试的解决方案是:print(f"hello world \{\}"). 但它没有用。
非常感谢您的帮助
我是 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) 您好,我有一个文件,例如
文件.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) bash ×3
perl ×3
regex ×3
loops ×2
arrays ×1
awk ×1
command-line ×1
curly-braces ×1
f-string ×1
file ×1
file-io ×1
grep ×1
hash ×1
heredoc ×1
idioms ×1
iteration ×1
linux ×1
macos ×1
minimum ×1
one-liner ×1
python ×1
python-3.x ×1
r ×1
ruby ×1
sed ×1
sequencing ×1
shell ×1
stderr ×1
stdout ×1
system-calls ×1
variables ×1
zsh ×1