gpt4 book ai didi

unix - 在单个命令中组合两个 awk 命令

转载 作者:行者123 更新时间:2023-12-04 13:27:08 24 4
gpt4 key购买 nike

我想结合这两个命令并想调用单个命令

在第一个命令中,我将 x.csv(Separator,) 文件的第 4 列存储在 z.csv 文件中。

awk -F, '{print $4}' x.CSV > z.csv

在第二个命令中,我想找出 z.csv(Separator-space) 文件的唯一第一列值。
awk -F\  '{print $1}' z.csv|sort|uniq

我想将这两个命令组合在一个命令中,我该怎么做?

最佳答案

假设z.csv的内容实际上是需要的,而不仅仅是您当前实现程序的方式的人工制品,那么您可以使用:

awk -F, '{ print $4 > "z.csv"
split($4, f, " ")
f4[f[1]] = 1
}
END { for (i in f4) print i }' x.CSV
split函数在空格和(关联)数组上中断字段 4 f4记录键值。最后的循环打印出不同的值,未排序。如果您需要对它们进行排序,您可以使用 GNU awk的内置排序函数或(如果您没有带有内置排序函数的 awk)在 awk 中编写自己的,或通过管道将输出传送到 sort .

使用 GNU awk ,您可以替换 END阻止:
         END { asorti(f4); for (i in f4) print f4[i] }

如果您不想要 z.csv文件,然后(a)您可以首先使用管道,并且(b)您可以简单地删除 print $4 > "z.csv"线。

关于unix - 在单个命令中组合两个 awk 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24400419/

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