如何将文本文件中的每一行保存为新文件

Bon*_*nie 4 awk while-loop

我有一个带有 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

我试过两种方法:

1.我找到了我认为的解决方案:

awk '{print substr($0,match($0,$2)) >> ( $1 ".txt" )}' 文件名

(来自http://www.linuxquestions.org/questions/linux-newbie-8/how-to-save-each-line-from-textfile-as-new-file-889795/

这适用于我制作的测试文件(5 行),但是当我在 100 多行文件上运行它时,我得到了前 17 个文件,然后出现错误:

awk: File18.txt 使打开的文件过多,输入记录号 18,文件 myfile.txt 源行号 1

我删除了第 18 行并重试并得到相同的错误。我删除了前 20 行并重试并得到相同的错误。

2.从同一个链接,我试过

猫 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

Ed *_*ton 6

awk -F'\t' '$1!=prev{close(out); out=$1".txt"; prev=$1} {sub(/[^\t]+\t/,""); print > out}' file
Run Code Online (Sandbox Code Playgroud)