然后,这些结果将在下面的脚本中用于绘制维恩图。

然后,这些结果将在下面的脚本中用于绘制维恩图。

我有以下来自维恩程序的输出文件。

[1, 2],106
[1, 3],2556
[2, 3],5207
[1, 2, 3],232
[2],7566
[3],8840
[1],5320

我需要一个命令来获取每行结果号作为脚本中的变量参数,如下所示:

$area1=这里必须是[1]之后的结果,$area2=这里必须是[2]之后的结果,$area3=这里必须是[3]之后的结果,$n12=这里必须是[2]之后的结果。 [1, 2] 之后的结果,$n13=这里必须是 [1, 3] 之后的结果,$n23=这里必须是 [2, 3] 之后的结果,$n123=这里必须是 [1, 3] 之后的结果[1,2,3],

然后,这些结果将在下面的脚本中用于绘制维恩图。

cat << catfile >> $prefix1-VennDiagram.R
library(VennDiagram);
venn.diagram(
    x = list(
        "$sample1" = c(1:$area1, $(($area1+1)):$(($area1+$n12)), $(($area1+$n12+1)):$(($area1+$n12+$n123)), $(($area1+$n12+$n123+1)):$(($area1+$n12+$n123+$n13))),
        "$sample2" = c($(($area1+$n12+$n123+$n13+1)):$(($area1+$n12+$n123+$n13+$area2)), $(($area1+1)):$(($area1+$n12)), $(($area1+$n12+1)):$(($area1+$n12+$n123)), $(($area1+$n12+$n123+$n13+$area2+1)):$(($area1+$n12+$n123+$n13+$area2+$n23))),
        "$sample3" = c($(($area1+$n12+$n123+$n13+$area2+$n23+1)):$(($area1+$n12+$n123+$n13+$area2+$n23+$area3)),  $(($area1+$n12+1)):$(($area1+$n12+$n123)), $(($area1+$n12+$n123+1)):$(($area1+$n12+$n123+$n13)), $(($area1+$n12+$n123+$n13+$area2+1)):$(($area1+$n12+$n123+$n13+$area2+$n23)))
        ),
    filename = "$prefix1-VennDiagram.tiff",
    col = "transparent",
    fill = c("red", "blue", "green"),
    alpha = 0.5,
    label.col = c("darkred", "white", "darkblue", "white", "white", "white", "darkgreen"),
    cex = 2.5,
    fontfamily = "arial",
    fontface = "bold",
    cat.default.pos = "text",
    cat.col = c("darkred", "darkblue", "darkgreen"),
    cat.cex = 2.0,
    cat.fontfamily = "arial",
    cat.fontface = "italic",
    cat.dist = c(0.06, 0.06, 0.03),
    cat.pos = 0
    );
catfile

Rscript $prefix1-VennDiagram.R
exit

答案1

这是单行:

sed 's/^.*\],/ /' yourfile|tr -d '\n'|sed -e '$a\'

如果您将这个东西作为选项传递给命令,您可以删除最后一个sed并使用

sed 's/^.*\],/ /' yourfile|tr -d '\n'

答案2

您可以使用awk打印每行的最后一个逗号分隔字段,然后(假设参数列表不超出其限制)xargs将它们组装成一行:

$ awk -F, '{print $NF}' yourfile | xargs
106 2556 5207 232 7566 8840 5320

相关内容