我有一个文件,其中一些行以'>'开头,所有其他行以一些字母开头.我想将我的大文件剪成几个较小的文件,以便剪切始终在">"之前.
我记得有一次我可以自己在bash上写这样的东西,但不幸的是我没有保存副本.
例如
>1
HAVE
ANIC
EDAY
>2
FOLK
SE
>3
SUNS
HINE
Run Code Online (Sandbox Code Playgroud)
将产生3个文件,每个文件在第一行都有">".
我正在做一些shell脚本.
我使用这种结构来创建新变量:
eval ${ARG}_ext=fastq
Run Code Online (Sandbox Code Playgroud)
哪个工作得很好,因为我可以直接使用这些新创建的变量:
$file_ext
Run Code Online (Sandbox Code Playgroud)
现在我想为名为extension的变量赋值:
extension=
Run Code Online (Sandbox Code Playgroud)
指定的值应该是变量$ {ARG} _ext中的值.拜托,我该怎么做?
我试过了
extension=eval ${ARG}_ext;
Run Code Online (Sandbox Code Playgroud)
但这给了我变量的名称,我想要它的价值.谢谢.
我有一个自定义类对象的ArrayList.我想知道,如果ArrayList包含具有某些属性的对象.我不关心对象,只要有一些.是的,我可以用foreach循环来做到这一点,但我想知道是否有更优雅的方式这样做.
谢谢你的建议.
我想像这样在正则表达式匹配之间打印部分:
echo "this is foo and another foo quux" | sed 's/this\(.*\)another.*/\1/'
Run Code Online (Sandbox Code Playgroud)
打印
is foo and
Run Code Online (Sandbox Code Playgroud)
什么是完全正常的,因为我希望在这个与另一个印刷品之间找到一部分.
但是,如果我想解析我的源代码并使用:
cat source_code | sed 's/.*AdulterateFood\(.*\)DangerousFood.*/\1/'
Run Code Online (Sandbox Code Playgroud)
而且我确实知道AdulterateFood和DangerousFood只有一次在源代码中,它仍然打印所有内容,整个文件:(我想知道为什么...... AdulterateFood和DangerousFood在不同的行.
谢谢你的建议.
我正在远程服务器上运行我的脚本。这是我的 .sh 脚本的标题:
#!/bin/bash
shopt -s extglob;
#turns on extended globbing features ('!' can then be used to exclude file names)
echo `ls -la /storage/brno2/home/nicki/snp/`;
cp -r /storage/brno2/home/nicki/snp/(!input) .
Run Code Online (Sandbox Code Playgroud)
感谢 echo,我可以看到名为“input”的文件夹位于我期望的文件夹中。然而,似乎 extglob 不适合我:(
/var/spool/torque/mom_priv/jobs/2308017.arien.ics.muni.cz.SC: line 11: syntax error near unexpected token `('
/var/spool/torque/mom_priv/jobs/2308017.arien.ics.muni.cz.SC: line 11: `cp -r /storage/brno2/home/nicki/snp/(!input) .'
Run Code Online (Sandbox Code Playgroud)
我当然可以列出我想要复制的所有文件。尽管如此,我还是想避免这种令人讨厌的做法。
谢谢。
我有一个进程生成两个我感兴趣的文件,hitsort.cls 和 contigs.fasta。我使用publishdir输出这些:
process RUN_RE {
publishDir "$baseDir/RE_output", mode: 'copy'
input:
file 'interleaved.fq'
output:
file "${params.RE_run}/seqclust/clustering/hitsort.cls"
file "${params.RE_run}/contigs.fasta"
script:
"""
some_code
"""
}
Run Code Online (Sandbox Code Playgroud)
现在,我需要这两个文件作为另一个进程的输入,但我不知道该怎么做。
我尝试过调用这个过程
NEXT_PROCESS(params.hitsort, params.contigs)
Run Code Online (Sandbox Code Playgroud)
同时将输入指定为:
process NEXT_PROCESS {
input:
path hitsort
path contigs
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为只使用基本名称而不是完整路径。基本上我想要的是等待 RUN_RE 完成,然后使用它输出的两个文件进行下一个进程。
我有两个嵌套的foreach循环.如果我使用此代码:
foreach (@directories) {
my $actual_directory = $_;
print "\nactual directory: ".$actual_directory."\n";
foreach (@files) {
my $file_name = $_;
my $actual_file = $actual_directory.$file_name;
print $actual_file."\n";
open(DATA, $actual_file) or die "Nelze otev?ít zdrojový soubor: $!\n";
my $line_number = 0;
# while (<DATA>){
# my @znaky = split(' ',$_);
# my $poradi = $znaky[0]; #poradi nukleotidu
# my $hodnota = $znaky[1]; #hodnota
# my @temp = $files_to_sum_of_lines{$actual_file};
# $temp[$line_number] += $hodnota;
# $files_to_sum_of_lines{$actual_file} = @temp;
# $line_number+=1;
# }
# close(DATA);
} …Run Code Online (Sandbox Code Playgroud) 我正在使用命令在gnuplot中制作调色板:
set pm3d implicit at b
set palette model RGB maxcolors 5
set cbrange [0:20]
set palette model RGB defined (4 '#006400', 8 '#00008B', 12 'blue', 16 '#C71585', 20 'red')
set cbtics 4
Run Code Online (Sandbox Code Playgroud)
这样我在垂直调色板上从上到下得到订单20,16,12,8,4,0.我需要从上到下阅读0,4,8,12,16,20.
我没有找到任何已经存在此订单的示例(从最小到最大).
谢谢你的建议:)
我试图在行尾删除 As 。
alice$ cat pokusni
SALALAA
alice$ sed -n 's/\(.*\)A$/\1/p' pokusni
SALALA
Run Code Online (Sandbox Code Playgroud)
一个A被删除就好了
alice$ sed -n 's/\(.*\)A+$/\1/p' pokusni
alice$ sed -n 's/\(.*\)AA*$/\1/p' pokusni
SALALA
Run Code Online (Sandbox Code Playgroud)
多次出现不是:(
我可能只是犯了一些非常愚蠢的错误,有什么帮助吗?谢谢。