有了这个代码,我得到了值最高和最低的学生.

但我找不到如何将其转换为更具可读性的输出.

代码

awk -F ';' 'NR==1 { min = max = $2; mina = maxa = $1 " " $2; next }
$2==max { maxa = maxa ", " $1 " " $2 }
$2==min { mina = mina ", " $1 " " $2 }
$2>max { max = $2; maxa = $1 " " $2 }
$2<min { min = $2; mina = $1 " " $2 }
END { print "Max:", maxa
  print "Min:", mina }' 备注.txt备注.txt

备注.txt备注.txt

pepe;5
marcos;7
marta;70
luis;70
ana;5
pedro;9
paco;70
pepa;7
rosa;5
manu;8

电流输出

Max: marta 70, luis 70, paco 70
Min: pepe 5, ana 5, rosa 5

期望输出

Max: 70 [marta,luis,paco]
Min:  5 [pepe,ana,rosa]

我怎样才能达到这样的yields 呢?

推荐答案

所需的更改真的很小.在寻求帮助之前,你可能会试着自己解决问题.

awk -F ';' 'NR==1 { min = max = $2; mina = maxa = $1; next }
  { val = "," $1 }
  $2==max { maxa = maxa val }
  $2==min { mina = mina val }
  $2>max { max = $2; maxa = $1 }
  $2<min { min = $2; mina = $1 }
  END { printf "Max: %2i [%s]\n", max, maxa
    printf "Min: %2i [%s]\n", min, mina }' notas.txt

格式说明符%2i预计最大值为两位数;如果它可以上升到三位数,则可能在两个位置都使用%3i.

Linux相关问答推荐

当页面对齐关闭时,x86—64上的对象中的成员初始化器的Clang代码生成错误?

使用sed或awk映射自定义和任意函数

BASH-SCRIPT-在特定行合并两个文件

Bash:将多行转换为单行的命令

在Linix&;Mac中运行Reaction本机项目时出现问题

重命名具有相同前缀的文件对中最旧的文件

使用文件名重新打开 linux 管道(仅从一侧)

如何使用 Linux 命令行跨子目录查找相似的文件名?

awk 不打印所需的 df 输出

使用 sed 从文本文件中删除特定字符串

如何用 Sed 替换 Match 后的 2 个连续行

是否可以在 XTerm 或 Konsole 中使 stdout 和 stderr 输出具有不同的 colored颜色 ?

nohup 是否可以跨管道工作?

为什么 Linux (x86) 的页面大小是 4 KB,这是如何计算的?

将参数传递给 awk 脚本文件

如何分析内存使用情况?

如何在 Linux 上传递带感叹号的参数?

根据文件名模式和文件内容列出文件名?

如何获取 GNU Makefile 中使用的 shell 命令的退出状态?

查找和基本名称不能很好地播放