Finden der max-und min-Werte und den Druck der Zeile aus einer Datei
Ich habe eine Datei, die zahlen in der ersten Spalte.
100,red
101,blue
102,black
Ich sollte schreiben Sie ein shell-Skript, es wird gedruckt, die Zeile mit der max und min zahlen.
max=0
cat file.txt|while read LINE
do
fir=`echo $LINE|awk '{print $2}'`
sec=`echo $LINE|awk '{print $3}'`
if [ $fir -gt $max ]; then
max=$fir
fi
if [ $sec -gt $max ];then
max=$sec
fi
done
grep $max file.txt
Dies ist, was ich versucht, so weit für das finden der max.
ein sehr "teuren" Weg zu analysieren, Ihre Linien UND warum schaust du
...awk '{print $3}'
... Sie haben nur 2 Elemente? @sudo_O richtig ist, awk ist hier am besten, aber wenn Sie nur versuchen zu lernen, shell-Codierung, dann reduzieren es auf while read fir sec ; do if [ $fir .... done < file.txt
. Viel Glück.max
wird in einer subshell, die durch die pipeline. Ändern Sie einfach zu while read LINE; do ...; done < file.txt
. Aber wie andere haben darauf hingewiesen, das ist sehr teuer.InformationsquelleAutor hackio | 2013-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für min-Wert:
Für max-Wert:
InformationsquelleAutor alind
Alternativ mit sort und sed
-n
flag - Sortieren als zahlen.Wie es zu benutzen:
InformationsquelleAutor loentar
Sollten Sie nur tun, die ganze Sache in
awk
wenn SieGNU awk
:Wenn Sie nicht:
Alternativ Vorsortieren und drucken die erste und Letzte Zeile:
Was für ein system sind Sie auf? Sie müssen nicht
GNU awk
es scheint.zweite funktioniert Super, aber sorry, für die etwas vergessen, dass ich ein Komma zwischen die zahlen und Farben
InformationsquelleAutor Chris Seymour
Erstellen Sie ein array mit den sortierten Elementen. Die ersten und die letzten Elemente sind mit den min-und max-Werte
sort -t',' -nk1 file
.InformationsquelleAutor abasu