我有以下文本文件。我正在向您展示前 3 行。
chrom st end gene strand c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14
chr6 3345 3543 geneA + 36 -23 -1 3 1250 946 416 458 475 417 58 80 2 14
chr9 1302 1389 geneB - 8 -10 -18 -8 2896 2128 635 955 372 385 -20 31 -7 -7
Run Code Online (Sandbox Code Playgroud)
我想按原样打印第一行,因为它是标题行。
然后对于后续行(即从第 2 行开始),我想按原样打印前 5 个字段(直到链信息),然后如果该字段(从第 6 个字段开始)具有值 >= 100 打印该值照原样,如果该字段的值 < 100,只需将其替换为 NA。
所以我的输出文件应该看起来像这样(理想情况下,制表符分隔)
chrom st end gene strand …Run Code Online (Sandbox Code Playgroud) 我有一个这样的文件,它是一个两列制表符分隔的文件。
CTGCAGTTTCCCCAAATGTGGGAAACTTGACTGTATAATTTGTGGCAGTGGTA a1
GATTTCCCCAAATGTGGGAAACTCACTCGGCAGGCGTTGATA a2
Run Code Online (Sandbox Code Playgroud)
我想得到这样的输出:
>a1
CTGCAGTTTCCCCAAATGTG
GGAAACTTGACTGTATAATT
TGTGGCAGTGGTA
>a2
GATTTCCCCAAATGTGGGAA
ACTCACTCGGCAGGCGTTGA
TA
Run Code Online (Sandbox Code Playgroud)
我试图在awk 中使用 fold 命令。是否可以在其中使用另一个命令awk?
另外,我想要的每条线的宽度是 15,所以我尝试了这样的操作,但没有奏效:
awk -F "\t" '{a=$(fold -w 50 $1);print a,$2}' file.txt
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个超过 200 列的文件。作为示例目的,我在这里使用列数较少的文件(9)。下面是输入文件(几行)
chr10 181243 225933 1 1 1 10 0 36
chr10 181500 225933 1 1 1 106 0 35
chr10 226069 255828 1 1 1 57 0 37
chr10 243946 255828 1 1 1 4 0 27
chr10 255989 267134 1 1 1 87 0 32
chr10 255989 282777 1 1 1 61 0 34
chr10 267297 282777 1 1 1 61 0 37
chr10 282856 283524 1 1 1 92 0 35
chr10 282856 285377 1 1 …Run Code Online (Sandbox Code Playgroud) 我有 2 个文本文件。让我们将它们命名为 file1.txt 和 file2.txt
file1.txt 如下
chr10 181144 225933
chr10 181243 225933
chr10 181500 225933
chr10 226069 255828
chr10 255989 267134
chr10 255989 282777
chr10 267297 282777
chr10 282856 283524
chr10 283618 285377
chr10 285466 285995
Run Code Online (Sandbox Code Playgroud)
file2.txt 如下
chr10 181144 225933
chr10 181243 225933
chr10 181500 225933
chr10 255989 282777
chr10 267297 282777
chr10 282856 283524
chr10 375542 387138
chr10 386930 387138
chr10 387270 390748
chr10 390859 390938
chr10 391051 394580
chr10 394703 395270
Run Code Online (Sandbox Code Playgroud)
我想在单个文件中输出的是
我有一个这种格式的大文件,我向您展示的前几行包括标题。
gene c1 c2 c3 c4 c5 c6 c7 c8
G1*1 0 0 0 0 0 0 0 0
G2*2 0 0 0 0 1 1 1 1
G3*3 0 0 2 2 44 44 62 62
G4*4 22 0 46 0 1308 7 1773 4
Run Code Online (Sandbox Code Playgroud)
基因的第一行是标题行。我想保持原样,然后我想用 FS = * 拆分剩余的行,以便现在我有一个看起来像这样的文件作为输出
gene coord c1 c2 c3 c4 c5 c6 c7 c8
G1 1 0 0 0 0 0 0 0 0
G2 2 0 0 0 0 1 1 1 …Run Code Online (Sandbox Code Playgroud) 我有一个带有 seq 的文件喜欢这个
ATCGTTTCTCAGCCTTTTGGCAAGACCAAGTGTAGTATCTGTTCTTATCAGATATTGGTATCTGCAGGCACTCCTGGAACCAAT
ATCACTTCTCAACCTTTTGACTAAGATCAAGTGTAATATCTATCTTTATCAGTTTAATATCTGAGATCTCCTTTATCTGAGGACAATATATTTAATGGATTTTTGGAACAGAGAGAAGGAATAGGAGCTTGTCCTGTCCACTCCATGCATTGACCTGGTATTGCAGGACCTCCAGAAACACCACCCCCTCC
ACGCATTATCCGCCTATTGGCTAAAAACAAATGTAGTATCTGTTCCTATCAGTTAAAGCATCAAATGTGGTCTCTAAGTTCAGGGAATTAAATTAATATTTGGAATTGGGAGATGGTTTGGGAGCTTGCTCTATCCTCTCCATGCCTCAGCATGTAATTGCAATGCTTTCAGGAGTGGTGCATTCCTT
Run Code Online (Sandbox Code Playgroud)
它有 3 行。我希望每一行的每个字母都由制表符分隔,然后想将其存储在另一个文件中。我该怎么做。
我有一个这样的文件:
A1-1915435_1_MIMAT0000069_MirBase_miR-16_microRNA_1_22-A1-1915435_1_ENSG00000206737_ENST00000384010_U1_snRNA_73_115
A1-2362643_1_MIMAT0000732_MirBase_miR-378_microRNA_1_21-A1-2362643_1_ENSG00000222328_ENST00000410396_U2_snRNA_168_211
Run Code Online (Sandbox Code Playgroud)
我想要一个输出,其中我将 micro RNA 部分和 ENSG 部分选项卡分开。像这样的事情:
miR-16_microRNA ENSG00000206737
miR-378_microRNA ENSG00000222328
Run Code Online (Sandbox Code Playgroud)
我可以为它编写一个 perl 脚本,但我想必须有使用 awk、sed perl 等的命令行解决方案。
我有一个看起来像这样的文件
a 0 gene1 56 0 6S32M12S *
b 256 gene2 56 0 6S32M12S *
c 256 gene3 55 0 6S27M17S *
d 16 gene4 110 9 19S25M6S *
e 272 gene5 141 9 23S21M6S *
f 272 gene6 139 9 24S20M6S *
g 0 gene7 38 1 6S44M *
h 256 gene8 38 1 6S44M *
I 256 gene9 38 1 6S44M *
j 256 gene10 40 1 8S42M *
Run Code Online (Sandbox Code Playgroud)
第 6 列是我要过滤的字符串。基本上,如果字符串包含等于或大于 16S 的匹配项(假设为 16S、17S、18S、19S 和更多),则报告这些行。我怎样才能做到这一点?上面例子的输出是:
c 256 …Run Code Online (Sandbox Code Playgroud) 我有一个 shell 脚本,它可以执行一些操作,例如将值存储在变量中。作为一个例子,这是我的脚本:
for i in ../../*.bam
do
fn=$(basename $i)
fn=${fn%_Aligned.sortedByCoord.out.bam}
bamToBed -i $i | awk -v OFS="\t" '{if($6 ~ /+/){print $1,$2+67,$2+67+1,$4,$5,$6}else{print $1,$3-67-1,$3-67,$4,$5,$6}}' | awk -v OFS="\t" '$3 > 0' > ${fn}_pos.bed
sortBed -g $genome -i ${fn}_pos.bed > ${fn}_n_pos.bed
mv ${fn}_n_pos.bed ${fn}_pos.bed
perl counter.pl ${fn}_pos.bed | sortBed -g $genome -i stdin | intersectBed -g $genome -sorted -a <(cat $genome | awk -v OFS="\t" '{print $1,"0",$2}') -b stdin -wa -wb | cut -f 4-7 > ${fn}.bedGraph
bedGraphToBigWig ${fn}.bedGraph $genome ${fn}.bw
a=`samtools …Run Code Online (Sandbox Code Playgroud) 我有一个包含许多链接的文件。例如,这里是我的文件:
link1
link2
link3
link4
link5
link6
link7
link8
link9
link10
link11
link12
link13
link14
link15
link16
Run Code Online (Sandbox Code Playgroud)
我想在同时运行第 1 个 4 个链接的单个终端上运行特定命令。例如我想运行的命令是
wget link1
wget link2
Run Code Online (Sandbox Code Playgroud)
等等。但我想同时运行前 4 个链接。然后,如果其中一个链接下载完成,则应自动提交下一个链接(即link5)以供下载,依此类推。
我正在寻找一种方法,我不一个一个地下载链接(使用更多时间),我也不必打开多个终端来提交多个单独的链接作为单独的命令。任何帮助将非常感激。