gpt4 book ai didi

awk - 如何使用 linux 命令 awk 在多个字段文件中拆分一个字段文件?

转载 作者:行者123 更新时间:2023-12-01 13:19:49 24 4
gpt4 key购买 nike

我有以下文件 list.txt:

AbateI.       D
AcatulloM. A
AcerbiF. D
AcquafrescaR. A
AcquahA. C
AdjapongC. D
AdnanA. D
AdrianoL. A
AjetiA. D
AlbiolR. D
AldeganiG. P
AleesamiH. D
AlexSandro D
AlissonR. P

我想用 awk 重新排列文件,将它们按第二列分组,如下所示:

P                    D              C                 A
AldeganiG. AbateI. AcquahA. AcatulloM.
AlissonR. AcerbiF. AcquafrescaR.
AdjapongC. AdrianoL.
AdnanA.
AjetiA.
AlbiolR.
AleesamiH.
AlexSandro

这是我尝试过的:

#!/usr/bin/awk -f

BEGIN {
FORMAT="\t%-20s%-20s%-20s%s\n"
printf FORMAT,"P","D","C","A"
}

($2=="P") {a[$1] = $1}
($2=="D") {b[$1] = $1}
($2=="C") {c[$1] = $1}
($2=="A") {d[$1] = $1}

END{for(i in a) printf FORMAT, a[i],"","",""}

但我不知道如何循环打印其他数组。

最佳答案

您可以使用 pastecolumn 进行一些流程替换:

$ paste \
<(awk '/P$/ {print $1}'<input) \
<(awk '/D$/ {print $1}'<input) \
<(awk '/C$/ {print $1}'<input) \
<(awk '/A$/ {print $1}'<input) | column -s $'\t' -t
AldeganiG. AbateI. AcquahA. AcatulloM.
AlissonR. AcerbiF. AcquafrescaR.
AdjapongC. AdrianoL.
AdnanA.
AjetiA.
AlbiolR.
AleesamiH.
AlexSandro

如果您愿意,可以手动添加列标题。

关于awk - 如何使用 linux 命令 awk 在多个字段文件中拆分一个字段文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39173743/

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