【发布时间】: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 手册中查找如何打印到文件而不是标准输出。