小编use*_*573的帖子

计算文本文件中匹配的术语数量?

我试图计算输入列表中匹配项的数量,该列表包含每行一个术语和一个数据文件,并创建一个包含匹配(grep'd)项和匹配数的输出文件.

input_list.txt如下所示:

+ 5S_rRNA
+ 7SK
+ AADAC
+ AC000111.3
+ AC000111.6
Run Code Online (Sandbox Code Playgroud)

data.txt文件:

chr10   101780038   101780209   5S_rRNA
chr10   103578280   103578430   5S_rRNA
chr10   112327234   112327297   5S_rRNA
chr10   120766459   120766601   7SK
chr10   127408228   127408317   7SK
chr10   127511874   127512063   AADAC
chr10   14614140    14614294    AC000111.3
chr10   14695964    14696146    AC000111.6
Run Code Online (Sandbox Code Playgroud)

我想创建一个输出文件(output.txt),其中包含匹配的术语及其相应的计数.

+ 5S_rRNA   3
+ 7SK   2
+ AADAC 1
+ AC000111.3    1
+ AC000111.6    1
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经使用以下脚本生成了包含所有匹配术语的列表,但是所有提供匹配术语计数的尝试都没有奏效.

    exec < input_list.txt
    while read line
    do
                grep -w data.txt | awk '{print $0}'| sort| uniq  >> grep_output.txt …
Run Code Online (Sandbox Code Playgroud)

unix perl grep match

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

使用grep或awk匹配文本

我遇到grep和awk的问题.我认为这是因为我的输入文件包含看起来像代码的文本.

输入文件包含ID名称,如下所示:

SNORD115-40
MIR432
RNU6-2
Run Code Online (Sandbox Code Playgroud)

参考文件如下所示:

Ensembl Gene ID HGNC symbol
ENSG00000199537 SNORD115-40
ENSG00000207793 MIR432
ENSG00000266661
ENSG00000243133
ENSG00000207447 RNU6-2
Run Code Online (Sandbox Code Playgroud)

我想将源文件中的ID名称与我的参考文件相匹配,并打印出相应的ensg ID号,以便输出文件如下所示:

ENSG00000199537 SNORD115-40
ENSG00000207793 MIR432
ENSG00000207447 RNU6-2
Run Code Online (Sandbox Code Playgroud)

我试过这个循环:

exec < source.file
while read line
do
grep -w $line reference.file > outputfile
done
Run Code Online (Sandbox Code Playgroud)

我也试过用awk来玩这个参考文件

awk 'NF == 2 {print $0}' reference file
awk 'NF >2 {print $0}' reference file
Run Code Online (Sandbox Code Playgroud)

但我只得到一个grep'd ID.

任何建议或更简单的方法都会很棒.

awk grep

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

使用awk修改文本

我正在尝试使用awk修改文本文件.有三列,我想删除第一列中的部分文本:

range=chr1      20802865        20802871        
range=chr1      23866528        23866534
Run Code Online (Sandbox Code Playgroud)

chr1      20802865        20802871        
chr1      23866528        23866534
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我试过awk '{ substr("range=chr*", 7) }'awk '{sub(/[^[:space:]]*\\/, "")}1',但删除了文件中的所有内容.

linux awk text replace sed

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

标签 统计

awk ×2

grep ×2

linux ×1

match ×1

perl ×1

replace ×1

sed ×1

text ×1

unix ×1