Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux BASH脚本-在中间用Culm划分Culm 2,但在两边保持1和4_Linux_Bash - Fatal编程技术网

Linux BASH脚本-在中间用Culm划分Culm 2,但在两边保持1和4

Linux BASH脚本-在中间用Culm划分Culm 2,但在两边保持1和4,linux,bash,Linux,Bash,我有一个包含ID、人口、地区和省份的列表,如下所示: 1:517000:405212:纽芬兰和拉布拉多 2:137900:5660:爱德华王子岛 3:751400:72908:新不伦瑞克省 4:938134:55284:新斯科舍省 5:7560592:1542056:魁北克 6:12439755:1076359:安大略省 7:1170300:647797:马尼托巴省 8:996194:651036:萨斯喀彻温省 9:318312:661848:阿尔伯塔省 10:4168123:944735:英国

我有一个包含ID、人口、地区和省份的列表,如下所示:

1:517000:405212:纽芬兰和拉布拉多
2:137900:5660:爱德华王子岛
3:751400:72908:新不伦瑞克省
4:938134:55284:新斯科舍省
5:7560592:1542056:魁北克
6:12439755:1076359:安大略省
7:1170300:647797:马尼托巴省
8:996194:651036:萨斯喀彻温省
9:318312:661848:阿尔伯塔省
10:4168123:944735:英国科蒙比亚
11:42800:1346106:西北地区
12:31200:482443:育空地区
13:29300:2093190:Nunavut
我需要显示人口密度最低和最高的省份的名称(人口/地区)。如何将第1列除以第2列(小数点后2位),但保持文件信息在任意一侧(例如1:1.28:纽芬兰和拉布拉多)。在那之后,我想我可以把它泵入
sort-t:-nk2 | head-n1
sort-t:-nrk2 | head-n1
来拉动它们


建议使用grep命令。

因为您似乎可以控制排序和提取,下面是一个示例awk脚本,它应该适用于您:

#!/usr/bin/env awk -f

BEGIN {
    FS=":"
    OFS=":"
    OFMT="%.2f"
}

{
    print $1,$2/$3,$4
}

您可能需要查看
awk
。谢谢您的回复。我打算使用awk作为最终输出(awk-F:“{print$4”的人口密度最低。”}”)。你是说我也能用它来做数学题吗?是的,
awk
也能做数学题。它可以做数学,选线,以及你想做的所有事情。感谢你的回复,我真的很接近了。我现在唯一的问题是awk删除了我的分隔冒号。可能是一些很简单的东西把它放回去。我有:
join-t:-13-22./files/capitals.sorted./files/provides.sorted | awk-F:{$5=$2/$3;print}排序-t:-nrk1 | head-n1 | awk-F”“{print$4”的人口密度最高。
。在第二个awk命令中,我用一个空格作为分隔符来测试它。我用一个示例awk脚本编写了一个答案。让我知道这对你是如何起作用的。你的OFS是我在实现中缺少的。谢谢现在我可以把它简化了。我有
join-t:-13-22./files/capitals.sorted./files/provinces.sorted | awk-F:“{5=$2/$3;print}”OFS=::| sort-t:-nrk5 | head-n1 | awk-F:“{print$4”的人口密度最高。”
,而且它的工作方式很马虎。