如何从多个文件中提取特定信息并在Linux中创建表?

初学者

我有多个包含信息的文本文件。在这里,我显示两个文本文件,如下所示:

Sample1.txt

Status  /documents/Sample1.sorted.bam
Assigned        50945040
Unassigned_Unmapped     947866
Unassigned_MappingQuality       0
Unassigned_Chimera      0
Unassigned_FragmentLength       0
Unassigned_Duplicate    0
Unassigned_MultiMapping 49013681
Unassigned_Secondary    0
Unassigned_Nonjunction  0
Unassigned_NoFeatures   21189312
Unassigned_Overlapping_Length   0
Unassigned_Ambiguity    4430011

Sample2.txt

Status  /documents/Sample2.sorted.bam
Assigned        36335614
Unassigned_Unmapped     870456
Unassigned_MappingQuality       0
Unassigned_Chimera      0
Unassigned_FragmentLength       0
Unassigned_Duplicate    0
Unassigned_MultiMapping 68688141
Unassigned_Secondary    0
Unassigned_Nonjunction  0
Unassigned_NoFeatures   23746485
Unassigned_Overlapping_Length   0
Unassigned_Ambiguity    3734593

对于单个文本文件,我正在使用grep:

grep "Assigned\|Unmapped\|MultiMapping\|NoFeatures\|Ambiguity" Sample1.txt > output.txt

但是我希望输出如下所示,因为我可以在所有文本文件上使用小脚本并生成表:

                        Sample1       Sample2
Assigned                50945040      36335614
Unassigned_Unmapped     947866        870456
Unassigned_MultiMapping 49013681      68688141
Unassigned_NoFeatures   21189312      23746485
Unassigned_Ambiguity    4430011       3734593
埃德·莫顿
$ cat tst.awk
$2 != 0 {
    printf "%s%s", (NR>1 ? $1 : "Name"), OFS
    for (i=2; i<=NF; i+=2) {
        gsub(/^.*\/|\..*$/,"",$i)
        printf "%s%s", $i, (i<NF ? OFS : ORS)
    }
}

$ paste Sample1.txt Sample2.txt | awk -f tst.awk | column -t
Name                     Sample1   Sample2
Assigned                 50945040  36335614
Unassigned_Unmapped      947866    870456
Unassigned_MultiMapping  49013681  68688141
Unassigned_NoFeatures    21189312  23746485
Unassigned_Ambiguity     4430011   3734593

要获得Excel可以理解的输出而不是问题中显示的输出,请执行以下操作:

$ cat tst.awk
BEGIN { OFS="," }
$2 != 0 {
    printf "%s%s", (NR>1 ? $1 : "Name"), OFS
    for (i=2; i<=NF; i+=2) {
        gsub(/^.*\/|\..*$/,"",$i)
        printf "%s%s", $i, (i<NF ? OFS : ORS)
    }
}

$ paste Sample1.txt Sample2.txt | awk -f tst.awk > output.csv

然后双击output.csv以使用Excel打开它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从python中的文件中提取特定信息

如何从目录中的文件中提取特定信息?

从多个CSV文件中提取信息,并在第三列中写入新的CSV文件

从多个TXT文件中提取数据并在Python中创建摘要CSV文件

在Windows中创建Zip文件并在Linux中提取Zip文件

如何从不同的文件中提取特定的列并在一个文件中输出?

如何从一个文件创建多个文件,为每个文件提取特定的信息?

如何提取信息并在R中的多个相似文件上执行相同操作?

从R中的NetCDF文件中提取特定于站点的信息

从 csv 文件中的字符串中提取特定信息

如何从POST请求有效负载中提取特定信息并保存到txt文件中?

如何使用 phpoffice 从 .xlsx 文件中提取特定工作表并从中创建新的 .xlsx?

如何从Perl中的多个标签中提取准确的信息

如何从linux中的多个xml文件中提取多个标签值

从多个日志文件中提取信息

如何从 Lambda 中的警报事件中提取特定信息

如何在Powershell中从RSS提要中提取特定信息?

无法从日志文件中提取特定信息

如何从flask中的txt(RIS)文件中提取信息

从Python目录中的多个CSV文件中提取特定列

从文本文件中提取信息,并在UNIX中的命令中使用它

如何根据文件名创建多个目录并在linux中更改文件名?

如何从pandas列中提取特定信息?

如何从文件中提取特定字符串(Linux)

如何使用Linux终端从日志文件中提取特定文本?

如何从数据框中的一列中提取信息并在右侧的列中插入

如何从Excel文件中提取组信息

从多个json文件中提取特定文本

从多个文件中提取特定行