
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]
.
echo
Auß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 file
anstelle des echo
Befehls 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