当前位置: 首页 > 面试题库 >

在Linux中使用不同的分隔符从文本文件中提取列

黎奇思
2023-03-14
问题内容

我有非常大的基因型文件,这些文件基本上不可能在R中打开,因此我试图使用linux命令行提取感兴趣的行和列。使用头/尾行足够简单,但是我很难弄清楚如何处理列。

如果我尝试使用以下方法提取(例如)第100-105个制表符或空格分隔列

 cut -c100-105 myfile >outfile

如果每列中包含多个字符的字符串,则这显然不起作用。有什么方法可以使用适当的参数修改cut,以便提取列内的整个字符串,其中列定义为空格或制表符(或任何其他字符)分隔吗?


问题答案:

如果命令应同时使用制表符和空格作为分隔符,则应使用awk

awk '{print $100,$101,$102,$103,$104,$105}' myfile > outfile

只要您只需要指定5个字段,就可以直接键入它们,对于更长的范围,您可以使用for循环:

awk '{for(i=100;i<=105;i++)print $i}' myfile > outfile

如果要使用cut,则需要使用以下-f选项:

cut -f100-105 myfile > outfile

如果字段分隔符与TAB您不同,则需要使用来指定-d

cut -d' ' -f100-105 myfile > outfile

检查手册页以获取关于cut命令的更多信息。



 类似资料:
  • 问题内容: 我想像这将是一个简单的任务,但在以前的StackOverflow问题中我找不到我正在寻找的东西…… 我有一个专有格式的大文本文件,看起来像这样: 依此类推。 文本文件的大小从10kb到100mb不等。我需要用定界符分割此文件。如何基于块处理每个文件? 问题答案: 您可以使用itertools.groupby对列表中出现的行进行分组: 产量 或者,要处理组,您实际上不需要转换为列表:

  • 问题内容: 我正在尝试读取以下形式的大文本文件: 我想在文本文件中将此字符串作为一个大的Java字符串读取。这可能吗?我知道使用split方法。 它可以逐行读取它,但我真正需要的是在“ +”号处分割此长文本字符串。之后,我想将其存储为数组,arraylist,列表,… 谁能帮我这个?因为互联网上的所有信息都只是逐行读取文件。提前致谢! 问题答案: 您可以使用或任何IO类读取文件。假设文件中包含该字

  • 问题内容: 我想使用Python从HTML文件中提取文本。如果要从浏览器复制文本并将其粘贴到记事本中,我希望得到的输出基本上相同。 我想要比使用正则表达式更强大的功能,而正则表达式可能在格式不正确的HTML上失败。我见过很多人推荐美丽汤,但是使用它时遇到了一些问题。例如,它拾取了不需要的文本,例如JavaScript源。此外,它没有解释HTML实体。例如,我希望&#39; 在HTML源代码中转换为

  • 问题内容: 我需要使用iText从pdf文件中提取文本。 问题是:一些pdf文件包含2列,当我提取文本时,我得到一个文本文件,其中的列作为结果合并(即同一行中两列的文本) 这是代码: 你能帮我完成这个任务吗? 问题答案: 我是iText文本提取子系统的作者。您需要做的是开发自己的文本提取策略(如果您看一下如何实现的话,就会发现您可以提供可插拔的策略)。 您将如何确定列的开始和停止位置完全取决于您-

  • 问题内容: 我有一个逗号分隔的CSV文件,其中包含NASDAQ符号。我使用扫描仪读取文件 我在第二个字段上遇到异常。问题是,该字段与文件中的其他某些字段一样也包含逗号,例如“ 1-800 FLOWERS.COM,Inc.”: 如何避免这个问题?我的代码是: 谢谢 问题答案: 除非这是家庭作业,否则您不应该自己解析CSV。使用现有库之一。例如: http //commons.apache.org/s

  • 我需要从大文件中提取文本(最大限制50MB)文件可能是doc、ppt、xls、txt或pdf格式。到目前为止,我使用了ApachePOI'http://poi.apache.org/' 用于Microsoft Office文档和PDFBox从PDF中提取文本。然而,随着文件变大,提取过程变得缓慢,特别是以下文件。到目前为止我取得的成果: 1. PPTX-45MB-3分钟apx 2.PDF-62MB