【问题标题】:Combine awk commands into perl or python [closed]将 awk 命令组合到 perl 或 python [关闭]
【发布时间】:2019-03-15 18:29:12
【问题描述】:

我是使用命令行操作文件的相对论新手。 我有一个非常大的文本文件,我需要从文件中提取某些行。 我可以用 awk 做到这一点

awk -F '\t' '{ if ($1 == "SampleA") print $0}' PatientID.txt > SampleA.txt

我想同时为多个示例执行此操作,而不必等待每个示例在命令行上完成,我可以编写一个 perl 或 python 脚本来执行此操作吗?我已经运行过其他人编写的 perl 和 python 脚本,但我自己没有编写任何脚本。

想做的事

awk -F '\t' '{ if ($1 == "SampleA") print $0}' PatientID.txt > SampleA.txt
awk -F '\t' '{ if ($1 == "SampleB") print $0}' PatientID.txt > SampleB.txt
awk -F '\t' '{ if ($1 == "SampleC") print $0}' PatientID.txt > SampleC.txt
awk -F '\t' '{ if ($1 == "SampleC") print $0}' PatientID.txt > SampleD.txt
awk -F '\t' '{ if ($1 == "SampleE") print $0}' PatientID.txt > SampleE.txt
awk -F '\t' '{ if ($1 == "SampleF") print $0}' PatientID.txt > SampleF.txt

然后将所有 SampleX.txt 文件连接到一个文件中。

【问题讨论】:

  • 请在您的问题中添加示例输入和该示例输入所需的输出。
  • 文件太大,无法添加示例。我基本上想从 PatientID.txt 文件中提取第一列值与给定值匹配的行。将所有这些行打印到一个新文件中。
  • 是的,您可以编写 perl 或 python 脚本来执行此操作。
  • 你能给我举个例子吗?我不确定如何将这些 awk 命令放入 perl 或 python。
  • 您也可以在单个 awk 脚本中执行此操作。在 awk 手册中查找如何打印到文件而不是标准输出。

标签: python perl awk


【解决方案1】:

awk 可以轻松做到这一点

$ awk -F'\t' '$1~/^Sample[A-F]$/{print > ($1".txt")}' PatientID.txt
$ cat Sample{A..F}.txt > SampleX.txt

【讨论】:

  • 感谢您的建议,当我的样品名称不连续(如样品 A、B、C、D 等)时,这会起作用吗?我有 300 多个样品,名称就像条码。例如 xx27-03-A10X 和 xx27-7A-73F0
  • 有更好的方法来处理这种情况,您的问题应该描述您的实际问题。
  • 我会尝试重新表述我的问题。我有一个非常大的文件,其中包含数千个样本的数据。我想为大文件中包含的一组样本 ID 提取数据。如何提取特定于样本 ID 列表的数据?
猜你喜欢
  • 1970-01-01
  • 2014-03-19
  • 2012-07-17
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
相关资源
最近更新 更多