如何将文本文件中的每一行保存为新文件
How to save each line in a text file as new file
我有一个包含 5 列的制表符分隔文本文件,我希望每一行都是自己的 txt 文件,其中包含第 2-5 列的信息并以第 1 列命名。
例如,我的 txt 文件有数百行与此类似:
sample1name_oligos primer forwardseq reverseseq sample1name
sample2name_oligos primer forwardseq reverseseq sample2name
我想要一个名为 sample1name_oligos 的 txt 文件,如下所示:
primer forwardseq reverseseq sample1name
和一个名为 sample1name_oligos 的 txt 文件,如下所示:
primer forwardseq reverseseq sample1name
我试过两种方法:
1。我找到了我认为的解决方案:
awk '{print substr($0,match($0,$2)) >> ( $1 ".txt" )}' 文件名
这适用于我制作的测试文件(5 行),但是当我在我的 100 多行文件中 运行 它时,我得到了前 17 个文件,然后是错误:
awk: File18.txt 打开的文件太多
输入记录编号 18,文件 myfile.txt
源代码行号 1
我删除了第 18 行并重试并得到了同样的错误。我删除了前 20 行并重试并得到了同样的错误。
2。来自同一个link,我试过
猫myfile.txt |在阅读 LINE 时;做 echo $LINE > "$LINE.txt";完成。
这为每一行创建了一个文件,如下所示:
sample1name_oligos primer forwardseq reverseseq sample1name
文件名为:
sample1name_oligos primer forwardseq reverseseq sample1name.
我不确定从这里到哪里去。我将不胜感激任何帮助。如果不是很明显,我几乎没有终端经验,所以我也很感激能解释我所缺少的东西的答案。
邦妮
awk -F'\t' '!=prev{close(out); out=".txt"; prev=} {sub(/[^\t]+\t/,""); print > out}' file
这个对我有用。刚刚为您的第二个解决方案添加了一个计数器
counter=0; cat your_file.txt | while read LINE; do ((counter++)); echo $LINE > "path/to/your/files/$counter.txt"; done
我有一个包含 5 列的制表符分隔文本文件,我希望每一行都是自己的 txt 文件,其中包含第 2-5 列的信息并以第 1 列命名。
例如,我的 txt 文件有数百行与此类似:
sample1name_oligos primer forwardseq reverseseq sample1name
sample2name_oligos primer forwardseq reverseseq sample2name
我想要一个名为 sample1name_oligos 的 txt 文件,如下所示:
primer forwardseq reverseseq sample1name
和一个名为 sample1name_oligos 的 txt 文件,如下所示:
primer forwardseq reverseseq sample1name
我试过两种方法:
1。我找到了我认为的解决方案:
awk '{print substr($0,match($0,$2)) >> ( $1 ".txt" )}' 文件名
这适用于我制作的测试文件(5 行),但是当我在我的 100 多行文件中 运行 它时,我得到了前 17 个文件,然后是错误:
awk: File18.txt 打开的文件太多 输入记录编号 18,文件 myfile.txt 源代码行号 1
我删除了第 18 行并重试并得到了同样的错误。我删除了前 20 行并重试并得到了同样的错误。
2。来自同一个link,我试过
猫myfile.txt |在阅读 LINE 时;做 echo $LINE > "$LINE.txt";完成。
这为每一行创建了一个文件,如下所示:
sample1name_oligos primer forwardseq reverseseq sample1name
文件名为:
sample1name_oligos primer forwardseq reverseseq sample1name.
我不确定从这里到哪里去。我将不胜感激任何帮助。如果不是很明显,我几乎没有终端经验,所以我也很感激能解释我所缺少的东西的答案。
邦妮
awk -F'\t' '!=prev{close(out); out=".txt"; prev=} {sub(/[^\t]+\t/,""); print > out}' file
这个对我有用。刚刚为您的第二个解决方案添加了一个计数器
counter=0; cat your_file.txt | while read LINE; do ((counter++)); echo $LINE > "path/to/your/files/$counter.txt"; done