Bash 如何使用帮助awk划分列表

Bash 如何使用帮助awk划分列表,bash,Bash,我需要帮助。我有文件vm.list: VM-NAME1|WEEKDAY|2| VM-NAME2|WEEKDAY|4| VM-NAME3|WEEKDAY|3| VM-NAME4|WEEKDAY|4| VM-NAME5|WEEKDAY|4| VM-NAME6|WEEKDAY|1| VM-NAME7|WEEKDAY|1| VM-NAME8|WEEKDAY|4| VM-NAME9|WEEKDAY|2| VM-NAME10|WEEKDAY|4| VM-NAME11|WEEKDAY|4| 我需要根据3个值

我需要帮助。我有文件vm.list:

VM-NAME1|WEEKDAY|2|
VM-NAME2|WEEKDAY|4|
VM-NAME3|WEEKDAY|3|
VM-NAME4|WEEKDAY|4|
VM-NAME5|WEEKDAY|4|
VM-NAME6|WEEKDAY|1|
VM-NAME7|WEEKDAY|1|
VM-NAME8|WEEKDAY|4|
VM-NAME9|WEEKDAY|2|
VM-NAME10|WEEKDAY|4|
VM-NAME11|WEEKDAY|4|
我需要根据3个值和动作运行将列表划分为新列表:

LIST1:
VM-NAME6
VM-NAME7

LIST2:
VM-NAME1
VM-NAME9

LIST3:
VM-NAME3

LIST4:
VM-NAME2
VM-NAME4
VM-NAME5
VM-NAME8
VM-NAME10
VM-NAME11
差不多

for i in $(awk -F "|" '{print $3}' today.list | sort | uniq)
    do echo $i
    awk -F "|" '{ if ($3 == '$i') print $1 }' today.list
done

我知道它有什么不正确,但我没有想法

试试这个awk一行:

awk -F'|' '{a[$3]=a[$3]RS$1}END{for(x in a)print "List"x":" a[x]}' file

尝试一下这款awk one liner:

awk -F'|' '{a[$3]=a[$3]RS$1}END{for(x in a)print "List"x":" a[x]}' file

期望源文件按cols 3和cols 1排序的版本(由
sort
进程内替换处理)


$awk-F\|{print q($3!=p?ORS“LIST”$3:“:”)}{p=$3;q=$1}'一个版本,期望源文件按cols 3和cols 1的顺序排列(由进程替换中的
排序
处理)


$awk-F\|{print q($3!=p)or“LIST”$3:“:”)}{p=$3;q=$1}'如果您希望输出在名为
LIST{1..4}
的单独文件中,可以使用以下方法:

$ awk -F'|' '{print $1 > "List" $3}' vm.list

$ head -n100 List* # just a quick hack to print them with a header...
==> List1 <==
VM-NAME6
VM-NAME7

==> List2 <==
VM-NAME1
VM-NAME9

==> List3 <==
VM-NAME3

==> List4 <==
VM-NAME2
VM-NAME4
VM-NAME5
VM-NAME8
VM-NAME10
VM-NAME11
$awk-F'|'{print$1>“List”$3}vm.List
$head-n100列表*#只需快速修改,即可打印带有标题的列表。。。

==>List1 List2 List3 List4如果您希望在名为
List{1..4}
的单独文件中输出,可以使用以下方法:

$ awk -F'|' '{print $1 > "List" $3}' vm.list

$ head -n100 List* # just a quick hack to print them with a header...
==> List1 <==
VM-NAME6
VM-NAME7

==> List2 <==
VM-NAME1
VM-NAME9

==> List3 <==
VM-NAME3

==> List4 <==
VM-NAME2
VM-NAME4
VM-NAME5
VM-NAME8
VM-NAME10
VM-NAME11
$awk-F'|'{print$1>“List”$3}vm.List
$head-n100列表*#只需快速修改,即可打印带有标题的列表。。。

==>List1 List2 List3 List4 Cool:)但这不会对输出进行排序。@Nikita:事实上,它不会比这更好。:)酷:)但这不会对输出进行排序。@Nikita:事实上,它不会比这更好。:)