#!/bin/sh########################################################################### 1ドル: input file# 2ドル: output filefor c in 'grep''tail''test''sort'doif ! command -v "$c" >/dev/null
thenecho"Error: command '$c' not found" >&2exit3fidoneiftest -z "1ドル"thenecho"Please call me with an input file..." >&2exit1fiif grep -Eqsv '^$|^[0-9]+$'"1ドル"thenecho"Found line neither empty nor with integer" >&2exit2fi_if="1ドル"test -z $( tail -n 1"$_if")&&echo >>"$_if"_of="${2:-out01.txt}"printf'' >"$_of"_tn="${3:-1}"_ec=0# total calories count_er=0# rank in input filewhileIFS=read -r line <&3doiftest -z "$line"then_er=$(( _er +1))iftest$_ec -ne 0thenecho"$_er:$_ec" >>"$_of"_ec=0fielse_ec=$(( _ec + line ))fidone3< "$_if"
sort -k 2 -t ':' -n "$_of"| tail -n 1
Le fichier de sortie permet de simplifie d'une part (c'est faisable de tout faire en mémoire mais c'est plus de code pas forcément lisible) et sert de contrôle d'autre part. (c'est ce qui a permis de détecter une petite erreur subtile corrigée par le echo >>"$_if") Ainsi, avec l'exemple donné dans l'énoncé, il contient :
1:6000
2:4000
3:11000
4:24000
5:10000
Le stockage du rang n'est pas forcément utile dans l'immédiat mais ça me permet de savoir le numéro de la ligne renvoyée en résultat.
"It is seldom that liberty of any kind is lost all at once." ― David Hume
# un bout de shell...
Posté par Gil Cot ✔ (site web personnel, Mastodon) . En réponse au message Avent du Code, jour 1. Évalué à 1.
...POSIX pour l'argent
Le fichier de sortie permet de simplifie d'une part (c'est faisable de tout faire en mémoire mais c'est plus de code pas forcément lisible) et sert de contrôle d'autre part. (c'est ce qui a permis de détecter une petite erreur subtile corrigée par le
echo >>"$_if") Ainsi, avec l'exemple donné dans l'énoncé, il contient :Le stockage du rang n'est pas forcément utile dans l'immédiat mais ça me permet de savoir le numéro de la ligne renvoyée en résultat.
"It is seldom that liberty of any kind is lost all at once." ― David Hume