在脚本sh中创建文本文件

时间:2019-03-26 14:30:34

标签: shell

我正在研究一个lil'shell脚本,以为我的实习创建维恩图。 第一步是从\ t表文本文件中提取基因列表,然后使用python脚本构建图。

但是在终端中执行此脚本时,输出文件list_geneX.txt出现了严重问题。似乎在txt扩展名旁边添加了一些其他字符和未知字符,例如“list_gene1.txt”“list_gene2.txt”,而我的python脚本找不到所需的文件。

我不知道如何解决此问题,这很奇怪,因为这些文件在使用文本编辑器打开时包含预期的内容。

Thx

PS:很抱歉英语/程序设计不佳,我是一个年轻的生物信息学学生,但实践却很完美:)

这是代码

不要用作脚本:

#!/bin/bash
#
#launch ./make_Venn.sh DEonly_DESeqRes_MS.CD8naiv_MS.CD4naiv.tsv DEonly_DESeqRes_HV.CD8naiv_HV.CD4naiv.tsv
#
file1=$1
file2=$2
name1=${file1:16}
name2=${file2:16}
cat $file1 | awk -F '\t' '{print $1}'  | sed '1d' > list_gene1.txt
cat $file2 | awk -F '\t' '{print $1}'  | sed '1d' > list_gene2.txt
./venn.py $name1 list_gene1.txt $name2 list_gene2.txt

在终端中复制/粘贴时可以工作:

#!/bin/bash
file1="DEonly_DESeqRes_MS.CD8naiv_MS.CD4naiv.tsv"
file2="DEonly_DESeqRes_HV.CD8naiv_HV.CD4naiv.tsv"
name1=${file1:16}
name2=${file2:16}
cat DEonly_DESeqRes_MS.CD8naiv_MS.CD4naiv.tsv | sed '1d'  | awk -F '\t' '{print $1}'> list_gene1.txt
cat DEonly_DESeqRes_HV.CD8naiv_HV.CD4naiv.tsv | sed '1d'  | awk -F '\t' '{print $1}'> list_gene2.txt
./venn.py $name1 list_gene1.txt $name2 list_gene2.txt

1 个答案:

答案 0 :(得分:0)

将代码更改为此:

name1=${file1:0:16}    #this will give you the first 16 characters


name1=${file1:16}      #your code was giving you character index 17 to end