我有一个带有 5 列的制表符分隔文本文件,我希望每一行都是它自己的 txt 文件,其中包含来自第 2-5 列的信息并以第 1 列命名。
例如,我的 txt 文件有数百行与此类似:
sample1name_oligos 引物 forwardseq reverseseq sample1name
sample2name_oligos 引物 forwardseq reverseseq sample2name
我想要一个名为 sample1name_oligos 的 txt 文件,如下所示:
引物 forwardseq reverseseq sample1name
和一个名为 sample1name_oligos 的 txt 文件,如下所示:
引物 forwardseq reverseseq sample1name
我试过两种方法:
awk '{print substr($0,match($0,$2)) >> ( $1 ".txt" )}' 文件名
这适用于我制作的测试文件(5 行),但是当我在 100 多行文件上运行它时,我得到了前 17 个文件,然后出现错误:
awk: File18.txt 使打开的文件过多,输入记录号 18,文件 myfile.txt 源行号 1
我删除了第 18 行并重试并得到相同的错误。我删除了前 20 行并重试并得到相同的错误。
猫 myfile.txt | 在阅读 LINE 时;做 echo $LINE > "$LINE.txt"; 完毕。
这为每一行创建了一个文件,如下所示:
sample1name_oligos 引物 forwardseq reverseseq sample1name
该文件被命名为:
sample1name_oligos primer forwardseq reverseseq sample1name.
I'm not sure where to go from here. I'd appreciate any help. If it's not obvious, I have little Terminal experience so I'd also appreciate answers that explain what I'm missing.
Bonnie
awk -F'\t' '$1!=prev{close(out); out=$1".txt"; prev=$1} {sub(/[^\t]+\t/,""); print > out}' file
Run Code Online (Sandbox Code Playgroud)