使用AWK从选项卡分隔的文件中提取一列
我知道这是一个简单的问题,但awk命令确实在融化我的大脑。我有一个制表符分隔的文件“inputfile.gtf”,我需要从中提取一列并将其放入一个新文件“newfile.tsv”中。我一辈子都想不出使用awk执行此操作的正确语法。以下是我尝试过的:使用AWK从选项卡分隔的文件中提取一列,awk,Awk,我知道这是一个简单的问题,但awk命令确实在融化我的大脑。我有一个制表符分隔的文件“inputfile.gtf”,我需要从中提取一列并将其放入一个新文件“newfile.tsv”中。我一辈子都想不出使用awk执行此操作的正确语法。以下是我尝试过的: awk -F, 'BEGIN{OFS="/t"} {print $8}' inputfile.gtf > newfile.tsv 也 这两个都给了我一个空文件。在我搜索的每一个地方,人们似乎都有完全不同的方法来完成这个简单的任务,而在这一
awk -F, 'BEGIN{OFS="/t"} {print $8}' inputfile.gtf > newfile.tsv
也
这两个都给了我一个空文件。在我搜索的每一个地方,人们似乎都有完全不同的方法来完成这个简单的任务,而在这一点上,我完全迷失了方向。任何帮助都将不胜感激。谢谢。您指定了错误的分隔符
/t
,制表符键入为\t
:
awk 'BEGIN{ FS=OFS="\t" }{ print $8 }' inputfile.gtf > newfile.tsv
您指定了错误的分隔符
/t
,制表符键入为\t
:
awk 'BEGIN{ FS=OFS="\t" }{ print $8 }' inputfile.gtf > newfile.tsv
为什么不更简单:
awk -F'\t' '{print $8}' inputfile.gtf > newfile.tsv
为什么不更简单:
awk -F'\t' '{print $8}' inputfile.gtf > newfile.tsv
您的第一个命令:
awk -F, 'BEGIN{OFS="/t"} {print $8}' inputfile.gtf > newfile.tsv
awk 'BEGIN{OFS="/t";FS="/t"};{print $8}' inputfile.gtf > newfile.tsv
您正在设置-F,
,这不是必需的,因为您的文件不是,
逗号分隔的
接下来,OFS=“/t”
:语法不正确,它应该是OFS=“\t”
,但您也不需要这样做,因为您不想将输出字段分隔符设置为\t
,因为您只打印一条记录,而OFS根本不涉及这种情况;除非打印至少两个字段
您的第二个命令:
awk -F, 'BEGIN{OFS="/t"} {print $8}' inputfile.gtf > newfile.tsv
awk 'BEGIN{OFS="/t";FS="/t"};{print $8}' inputfile.gtf > newfile.tsv
同样,它不是/t
,它应该是\t
。另外FS=“\t”
类似于-F”\t“
您真正需要的是:
awk -F"\t" '{print $8}' inputfile.gtf > newfile.tsv
或
如果您的文件只有选项卡
,而字段之间没有空格,那么您可以简单地使用:
awk '{print $8}' inputfile.gtf > newfile.tsv
您的第一个命令:
awk -F, 'BEGIN{OFS="/t"} {print $8}' inputfile.gtf > newfile.tsv
awk 'BEGIN{OFS="/t";FS="/t"};{print $8}' inputfile.gtf > newfile.tsv
您正在设置-F,
,这不是必需的,因为您的文件不是,
逗号分隔的
接下来,OFS=“/t”
:语法不正确,它应该是OFS=“\t”
,但您也不需要这样做,因为您不想将输出字段分隔符设置为\t
,因为您只打印一条记录,而OFS根本不涉及这种情况;除非打印至少两个字段
您的第二个命令:
awk -F, 'BEGIN{OFS="/t"} {print $8}' inputfile.gtf > newfile.tsv
awk 'BEGIN{OFS="/t";FS="/t"};{print $8}' inputfile.gtf > newfile.tsv
同样,它不是/t
,它应该是\t
。另外FS=“\t”
类似于-F”\t“
您真正需要的是:
awk -F"\t" '{print $8}' inputfile.gtf > newfile.tsv
或
如果您的文件只有选项卡
,而字段之间没有空格,那么您可以简单地使用:
awk '{print $8}' inputfile.gtf > newfile.tsv
谢谢,那对我来说是个愚蠢的错误。谢谢,那对我来说是个愚蠢的错误。谢谢你的替代方法。我很困惑,因为我在网上找到的awk指南中没有一个能很好地解释命令的语法。因此,似乎有很多方法可以做同样的事情,而且它们在我看来都完全不同。正如你所知,在这里给新手编码。谢谢你的替代方法。我很困惑,因为我在网上找到的awk指南中没有一个能很好地解释命令的语法。因此,似乎有很多方法可以做同样的事情,而且它们在我看来都完全不同。正如你所知,在这里给新手编码。