我有这样一个文本文件:

Viruses/GCF_000820355.1_ViralMultiSegProj14361_genomic.fna.gz
Sclerophthora macrospora virus A
Viruses/GCF_000820495.2_ViralMultiSegProj14656_genomic.fna.gz
Influenza B virus RNA
Viruses/GCF_000837105.1_ViralMultiSegProj14079_genomic.fna.gz
Tomato mottle virus

我需要一个csv个这样的文件:

Viruses/GCF_000820355.1_ViralMultiSegProj14361_genomic.fna.gz,Sclerophthora macrospora virus A
Viruses/GCF_000820495.2_ViralMultiSegProj14656_genomic.fna.gz,Influenza B virus RNA
Viruses/GCF_000837105.1_ViralMultiSegProj14079_genomic.fna.gz,Tomato mottle virus

因为后来我想用这个元组来查找压缩文件,读取它,得到一个最终文件,其名称如下:

Viruses/GCF_000837105.1/Tomato mottle virus.fna

我只需要学习如何做问题的第一部分.它可以通过以下方式实现:

  • 塞德
  • R
  • python

任何帮助都将不胜感激.这对我来说很难实现,因为原始文件名非常混乱.

谢谢大家抽出时间.

保罗


PS-我试过这个:

塞德 -z 's/\n/,/g;s/,$/\n/' multi_headers

然而,它在所有\n个单词中加了逗号.

推荐答案

在每个Unix设备上的任意shell中使用任意awk,并且每次只在内存中存储一行,因此无论输入文件有多大,它都可以工作:

$ awk '{ORS=(NR%2 ? "," : RS)} 1' file
Viruses/GCF_000820355.1_ViralMultiSegProj14361_genomic.fna.gz,Sclerophthora macrospora virus A
Viruses/GCF_000820495.2_ViralMultiSegProj14656_genomic.fna.gz,Influenza B virus RNA
Viruses/GCF_000837105.1_ViralMultiSegProj14079_genomic.fna.gz,Tomato mottle virus

上面的少量代码中发生了很多事情,下面是一个解释:

  • ORS是内置变量,包含要在每个输出记录末尾打印的字符串(本例中为record=line),默认为换行.
  • RS是内置变量,包含分隔每个输入记录的字符串(或regexp),默认为换行符.
  • NR是包含当前记录/行号的内置变量,因此NR%2表示奇数记录为1,0表示偶数记录为0.
  • NR%2 ? "," : RSternary expression,奇数行为,,偶数行为\n(或您将RS设置为的任何其他值,例如\r\n).
  • 1是导致执行打印当前记录的默认操作的真实条件.

所以上面的脚本说"如果当前行号是奇数,那么在末尾用,打印,否则在末尾用换行符打印",因此它把每一对行都用,连接起来.

Python相关问答推荐

Geopandas未返回正确的缓冲区(单位:米)

将标签移动到matplotlib饼图中楔形块的开始处

ConversationalRetrivalChain引发键错误

在Google Drive中获取特定文件夹内的FolderID和文件夹名称

数据框,如果值在范围内,则获取范围和

仅使用预先计算的排序获取排序元素

如何根据一定条件生成段id

对于标准的原始类型注释,从键入`和`从www.example.com `?

遍历列表列表,然后创建数据帧

pyspark where子句可以在不存在的列上工作

PYODBC错误(SQL包含-26272个参数标记,但提供了235872个参数,HY 000)

将标量值作为输入并输出矩阵的函数的积分

从语法生成后出现Antlr4 Python运行时错误

Regex模式在Python中不起作用,但在RegExr上?

JAX是否保存了JIT编译函数的jaxpr?

将公钥字节加载为DH密钥

如何从标准输入中读取超过4096个字节,并将其复制粘贴到Linux上的终端?

获取文本文件并创建CSV文件

如何使用Pandas在Excel中有条件地设置单个单元格的格式?

我正在试着做一个简单的程序来判断学校的一个项目的调查数据,但它不起作用,有人能帮我吗?