Bash: grep 命令用于在“:”之间分一条线并显示第三部分
Bash: grep command for divide a line between ":" and showing the third part
脚本通过参数读取文件。
然后脚本会询问我们想要的两个城市,origin_city 和 destiny_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,可能还有 sed 和 cut ,但不知道如何,所以我请求你的帮助。我有这个但不起作用:
grep origen:desti
if [ "$origen" == $(cut -d":" -f1) ]
then
echo "1"
else
echo "0"
fi
我该如何解决这个问题?
与awk :
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
脚本通过参数读取文件。
然后脚本会询问我们想要的两个城市,origin_city 和 destiny_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,可能还有 sed 和 cut ,但不知道如何,所以我请求你的帮助。我有这个但不起作用:
grep origen:desti
if [ "$origen" == $(cut -d":" -f1) ]
then
echo "1"
else
echo "0"
fi
我该如何解决这个问题?
与awk :
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