Shell-Skript, das die Zeilen zählt, die Werte im Bereich erfüllen

Shell-Skript, das die Zeilen zählt, die Werte im Bereich erfüllen

Ich habe das :

 S=`cat sales.txt`;
    echo "$S" | cut -d: -f5 | grep -E '[0-9][0-9][0-9]' | wc -l

Meine Textdatei:Name:ID:Nummer:Typ:Wert

Tom:8:987654:A:67           //1
Dick:9:7651:B:83            //2
Harry:5:21215121:A:92       //3
Molly:2:1231872231:A:44     //4
Megan:123:322:B:145         //5
Russia:8:99231272:B:530     //6
Boleh:123:29321831:C:5000   //7

Ich versuche, die Anzahl der Zeilen zu zählen, wobei der Wert der 5. Spalte im Bereich von 0-999 liegt.

Beim Versuch zu laufen, wird mir 3 angezeigt, obwohl es 6 sein müsste.

Antwort1

Ihre zweistelligen Zahlen stimmen nicht mit dem regulären Ausdruck überein [0-9][0-9][0-9].

echoAußerdem ist das Speichern einer Datei in einer Variablen und das anschließende Drucken mitWirklichschlechte Idee. SieheWarum ist printf besser als echo?, aber was noch wichtiger ist: Sie können cat fileanstelle des echoBefehls einfach Folgendes tun.

Eigentlich kannst du das Ganze mit Awk machen und brauchst dann nicht mal cat. Da du keine negativen Zahlen zeigst, mache ich einfach eine Prüfung auf „weniger als tausend“.

awk -F: '$5 < 1000 {a++} END {print a}' sales.txt

verwandte Informationen