Was ist der schnellste Weg in Linux/AIX-Unix mit bash/ksh, um einen nicht numerischen Wert in einer bestimmten Spalte einer großen CSV-Datei und die Zeilennummer zu erhalten.Schnellste Möglichkeit zur Suche nach einem nicht numerischen Wert in CSV
Lassen Sie uns sagen, dass ich Daten in folgendem Format haben,
1,AAA,486254452,1F
2,BAF,265363,6A
3,AFHGJ, ,3G
...
50000,GAJGFGS,.,5H
...
100000,GHFHFFS,47,6L
die Anzahl der Zeilen in der CSV Unter Berücksichtigung 100.000 leicht sein könnte, was ist der schnellste Weg, um die Zeilennummern zu identifizieren, die in nicht-numerische Werte hat die dritte Spalte. Nicht-numerisch muss - Leerzeichen, '.'
Ich versuchte ein Shell-Skript und Schleife durch jede Zeile der Datei, aber das dauert eine Menge Zeit.
line=0
while read lineOfCSV
3rdCol=`echo $lineOfCSV | cut -d ',' -f3`
line=`expr $line +1`
if ! [[ $3rdCol=~ '^[0-9]+$' ]] ; then
echo "Line = :$line: NON-NUMERIC VALUE :$3rdCol:"
fi
done < data.csv
lief ich den obigen Code für eine CSV-Datei mit 80000 Zeilen, es dauerte mehr als 10 Minuten zu verarbeiten. Also habe ich das Skript gestoppt und nach einer schnelleren Lösung gegoogelt. Ich konnte nichts Bestimmtes finden. Also habe ich die Frage hier gepostet.
Bevor von unten keine gültigen Antworten zu akzeptieren, können Sie aktualisieren, was Ihre ursprüngliche Ausführungszeit war und welcher Faktor wurde von der effizienteste Lösung reduziert unten? – Inian
können Sie bearbeiten, was nicht-numerische enthalten sollte. Was ist das? Einfaches Zitat und Punkt oder beides? "." – Chet
Bitte geben Sie den ursprünglichen Code ein. –