我有这段代码,它可以很好地满足我的要求(来自@AdminBee 对“从 CSV 文件中打印重复值,包括出现次数”的回答,顺便说一句,谢谢!):
awk -F'|' '{c[$27]++} END{for (i in c) {if (c[i]>1) print c[i],i}}' input.csv
我需要将它放在一个单独的文件中(例如pk_check.awk
),然后能够从 zsh 内部调用它,但传递变量,例如分隔符、列号、文件名和扩展名,例如
separator=|
column_number=27
filename=input
extension=csv
echo | awk -v x=$separator -v y=$column_number -v w=$filename -v z=$extension -f pk_check.awk
(上面的代码不仅仅是一个想法,可能不正确或效率低下)
其背后的想法是,我可以(在将来)拥有更多足够通用的 awk“迷你测试”,以便从具有不同参数的 zsh 脚本中调用,甚至可以让 shell 脚本接收或处理不同文件的参数列表。
但在这一切之前,我必须先解决这个问题!:) 我尝试了一些丑陋的东西来发布在这里,我真的不太明白如何修改 .awk 文件以使其通用或如何从 shell 脚本调用它。