gpt4 book ai didi

unix - 使用 Awk 从分隔文件中提取特定列

转载 作者:行者123 更新时间:2023-12-03 08:34:39 26 4
gpt4 key购买 nike

对不起,如果这太基本了。我有一个 csv 文件,其中的列有一个标题行(v1、v2 等)。我知道要提取第 1 列和第 2 列,我必须这样做:awk -F "," '{print $1 "," $2}' infile.csv > outfile.csv .但是如果我必须提取第 1 到 10、20 到 25 和 30、33 列怎么办?作为附录,有没有办法直接使用标题名称而不是列号进行提取?

最佳答案

我不知道是否可以在 awk 中进行范围操作。你可以做一个 for 循环,但你必须添加处理来过滤掉你不想要的列。这样做可能更容易:

awk -F, '{OFS=",";print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$20,$21,$22,$23,$24,$25,$30,$33}' infile.csv > outfile.csv

其他需要考虑的事情 - 这更快,更简洁:
cut -d "," -f1-10,20-25,30-33 infile.csv > outfile.csv

至于您问题的第二部分,我可能会在 perl 中编写一个脚本,该脚本知道如何处理标题行,从标准输入或文件中解析列名称,然后进行过滤。这可能是我想要用于其他事情的工具。我不确定是否可以在一个类轮中进行,尽管我确信可以做到。

关于unix - 使用 Awk 从分隔文件中提取特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7857090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com