我有一个包含 ID、人口、地区和省份的列表,如下所示:
1:517000:405212:Newfoundland and Labrador
2:137900:5660:Prince Edward Island
3:751400:72908:New Brunswick
4:938134:55284:Nova Scotia
5:7560592:1542056:Quebec
6:12439755:1076359:Ontario
7:1170300:647797:Manitoba
8:996194:651036:Saskatchewan
9:3183312:661848:Alberta
10:4168123:944735:British Comumbia
11:42800:1346106:Northwest Territories
12:31200:482443:Yukon Territories
13:29300:2093190:Nunavut
我需要显示人口密度(人口/面积)最低和最高的省份名称。如何将第 1 列除以第 2 列(小数点后两位),但保持两侧的文件信息完整(例如 1:1.28:纽芬兰和拉布拉多)。之后我想我可以将它放入 sort -t: -nk2 | head -n 1 和 sort -t: -nrk2 | head -n 1
来拉它们。
推荐的命令是 grep。
最佳答案
由于您似乎可以控制排序和提取,因此这里有一个应该适合您的 awk 脚本示例:
#!/usr/bin/env awk -f
BEGIN {
FS=":"
OFS=":"
OFMT="%.2f"
}
{
print $1,$2/$3,$4
}
关于linux - Bash 脚本 - 将第 2 列除以中间的列,但将 1 和 4 保留在两侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16051887/