Bash 如何使用帮助awk划分列表
我需要帮助。我有文件vm.list: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-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:事实上,它不会比这更好。:)