gpt4 book ai didi

awk - 如何将文本文件中的每一行另存为新文件

转载 作者:行者123 更新时间:2023-12-01 22:06:18 25 4
gpt4 key购买 nike

我有一个包含 5 列的制表符分隔文本文件,我希望每一行都有自己的 txt 文件,其中包含第 2-5 列的信息,并以第 1 列命名。

例如,我的 txt 文件有数百行与此类似:

sample1name_oligos 引物正向序列反向序列样本1name

sample2name_oligos 引物正向序列反向序列样本2name

我想要一个名为 example1name_oligos 的 txt 文件,如下所示:

引物正向序列反向序列样本1名称

和一个名为sample1name_oligos的txt文件,如下所示:

引物正向序列反向序列样本1名称

我尝试了两种方法:

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。从同一个链接,我尝试了

cat myfile.txt |读取 LINE 时;执行 echo $LINE > "$LINE.txt";完成。

这为每一行创建了一个文件,如下所示:

sample1name_oligos 引物正向序列反向序列样本1name

文件被命名为:

sample1name_oligos 引物正向序列反向序列样本1name。

我不知道从这里该去哪里。我将不胜感激任何帮助。如果它不明显,我几乎没有终端经验,所以我也很感激能解释我所缺少的内容的答案。

邦妮

最佳答案

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

关于awk - 如何将文本文件中的每一行另存为新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30605732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com