Bash: grep 命令用于在“:”之间分一条线并显示第三部分

Bash: grep command for divide a line between ":" and showing the third part

脚本通过参数读取文件。

然后脚本会询问我们想要的两个城市,origin_citydestiny_city得到他们的距离。

引入后会搜索是否有 行 origin_city:destiny_city:distance 在 distances

的文件中

如果找到,会显示距离,如果没有,会报告。

示例:

Show distance between cities

Intro origin_city: Barcelona (we input it / read it)

Intro destiny_city: Madrid (we input it / read it) 

Distance: 623 Km

文件格式为:

Barcelona:Valencia:350
Barcelona:Madrid:623
Valencia:Zaragoza:308
Madrid:Lugo:505
Barcelona:Sevilla:995

所以,我知道我需要在这里使用 grep,可能还有 sedcut ,但不知道如何,所以我请求你的帮助。我有这个但不起作用:

grep origen:desti
if [ "$origen" == $(cut -d":" -f1) ]
then
    echo "1"
else    
    echo "0"
fi

我该如何解决这个问题?

:

origin=Barcelona
destination=Madrid
distance=$(awk -F: -vf=$origin -vt=$destination '==f && ==t{print }' file)
if [[ $distance ]]; then
    echo "$origin => $destination: $distance"
else
    echo >&2 "no match"
fi

输出

623