2017-09-23 2 views
-1

Im Linux:Linux cmd für Dateisuche (CSV) von Spaltennamen

So, csv ist mit: Id, Beruf und so weiter den Spalten Name ...

Ich muss wählen spezifische .csv-Dateien nach Spaltenname {'Profession' => 'Teacher'}. Wie man cmnds in Linux ausführt? Ich habe versucht, grep zu verwenden, funktioniert aber nicht so, wie ich es möchte.

+2

Post ein bisschen von der Datei, damit die Leute Ihnen helfen können, und welche Art von Linux - Ubuntu? CentOS? Minze? – user2182349

+1

Je nach dem detaillierten Format (eingebettete Anführungszeichen/doppelte Anführungszeichen? Eingebettete Kommas?) Ihrer CSVs sind Ihre Befehlszeilenwerkzeuge möglicherweise eine schlechte Wahl. Wenn das Format einfach ist und sich keine der möglichen Trennzeichen in Feldern befinden, können Sie die Dateien mit awk angreifen. Ihre "Frage", so wie sie steht, bietet sich nicht für eine Antwort an - fehlende Eingabe, wie @ user2182349 herausstellte. – tink

Antwort

0

Wenn alles, was wir wissen, ist der Spaltenname und eine Eingabedatei mit der ersten Zeile die Spaltennamen gefolgt von den Daten, hier ist ein Start. Ich schreibe nicht für den Mangel an 100% Klarheit. Wir haben den Spaltennamen als Skriptparameter. Wir müssen die Nummer dieses Feldes in der CSV-Datei bestimmen. Es kann durch eine Case-Anweisung erfolgen. Nun, wenn wir diese Spaltennummer kennen, sagen wir 5, ist es einfach, den Befehl zum Ausschneiden zu verwenden. cut - d "," -f5 spezifische .csv

0

Also ich denke, Sie möchten die erste Zeile der CSV grep und geben Sie es zurück, wenn es eine bestimmte hat. Aber ich kann nicht sagen, ob deine Frage besagt, dass du sie auch in eine neue verwandeln willst. Wenn Sie nur die ehemaligen möchten, können Sie tun:

echo $(find . -name '*csv' -exec head -n1 {} \;) | grep Tuesday 

Allerdings, wenn Sie diese tun möchte:

for i in $(find $(pwd) -name '*csv'); do sed -i '1s/Profession/Teacher/g' $i; done 

werden Sie brauchen, wenn auf dem Mac verwenden GSED.