文本文件内容如下 姓名 民族 年龄 黄坤 汉 21 程万琴 回 19 梁栋 傣 20 张双敏 苗 18 编写Linux中 gawk程序 输出少数民族学生的姓名以及他们的平均年龄,精确到小数点后一位
时间: 2024-02-10 21:20:27 浏览: 67
下面是 gawk 程序的代码:
```shell
gawk '$2!="汉" {name[++i]=$1; sum+=$3} END {avg=sum/i; printf("少数民族学生姓名:"); for (j=1; j<=i; j++) printf("%s ",name[j]); printf("\n平均年龄:%.1f\n", avg)}' 文件名
```
其中,`$2!="汉"` 表示筛选出民族不为“汉”的行,即少数民族学生的行,`name[++i]=$1; sum+=$3` 表示将对应的姓名存储到数组 `name` 中,并累加年龄的总和。`END` 表示对筛选出的结果进行操作,`printf` 语句用于输出结果。
注意:代码中的 `文件名` 需要替换为实际的文件名。
相关问题
文本文件内容如下 姓名 性别 年龄 黄坤 汉 21 程万琴 回 19 梁栋 傣 20 张双敏 苗 18 编写Linux中 gawk程序 输出少数民族学生的姓名以及他们的平均年龄,精确到小数点后一位
可以使用以下的 gawk 程序实现:
```bash
gawk '$2 != "汉" {sum += $3; count++} END {printf "少数民族学生的平均年龄为 %.1f 岁\n", sum/count}' 文件名
```
其中,`$2 != "汉"` 表示只对第二列不是汉族的行进行处理,`sum += $3; count++` 表示累加年龄和人数,`END` 表示处理完所有行后执行的操作,`printf` 用于输出结果。注意,需要将文件名替换成实际的文件名。
文本文件内容如下 姓名 民族 年龄 黄坤 汉 21 程万琴 回 19 梁栋 傣 20 张双敏 苗 18 编写Linux中 gawk程序 输出年龄大于或等于20的男生的姓名以及他们的平均年龄,精确到小数点后一位
下面是 gawk 程序的代码:
```shell
gawk '$2=="汉" && $3>=20 {name[++i]=$1; sum+=$3} END {avg=sum/i; printf("年龄大于等于20的男生姓名:"); for (j=1; j<=i; j++) printf("%s ",name[j]); printf("\n平均年龄:%.1f\n", avg)}' 文件名
```
其中,`$2=="汉" && $3>=20` 表示筛选出民族为“汉”且年龄大于等于20的行,`name[++i]=$1; sum+=$3` 表示将对应的姓名存储到数组 `name` 中,并累加年龄的总和。`END` 表示对筛选出的结果进行操作,`printf` 语句用于输出结果。
注意:代码中的 `文件名` 需要替换为实际的文件名。
阅读全文