Methode 1: Wenn es immer die 2. Spalte, die Sie möchten, können Sie dies mit awk - dieser Befehl tatsächlich die Zeilen auf dem Leerzeichen statt dem Komma Aufspalten, so wird es Ihre zweite Säule - die Zahlen, aber ohne den führenden Raum:
awk '{print $2}' < whatever.csv
Methode 2: Oder alles nach dem Komma (einschließlich th zu bekommen e Raum):
sed -e 's/^.*,//g' < whatever.csv
Methode 3: Wenn Sie alle der .csv Dateien zu suchen und die Ausgabe von ihnen allen zusammen zu bekommen, können Sie tun:
sed -e 's/^.*,//g' `find . -name '*.csv' -print`
Methode 4: Oder auf die gleiche Weise zu beginnen wurden - mit und xargs finden:
find . -name '*.csv' -type f -print | xargs sed -e 's/^.*,//'
Methode 5: machen alle die CSV Dateien in.txt Dateien, die auf die oben beschriebene Weise verarbeitet werden, können Sie ein kurzes Shell-Skript erstellen. Wie folgt aus:
Erstellen Sie ein Skript "bla.sh":
#!/bin/sh
for infile in `find . -name '*.csv' -print` ; do
outfile=`echo $infile | sed -e 's/.csv/.txt/'`
echo "$infile --> $outfile"
sed -e 's/^.*,//g' < $infile > $outfile
done
ausführbar machen, indem diese eingeben:
chmod 755 bla.sh
Dann ist es laufen:
./bla.sh
Dies erzeugt einen .txt Ausgang Datei mit allem nach dem Komma für jede .csv Eingabedatei.
alternative Methode 5: Oder wenn Sie sie brauchen, wie dies namentlich genannt werden .csv könnte das Skript aktualisiert werden - das macht nur eine Ausgabe Datei mit dem Namen „Datei-new.csv“ für jede Eingabedatei "file.csv" genannt:
#!/bin/sh
for infile in `find . -name '*.csv' -print` ; do
outfile=`echo $infile | sed -e 's/.csv/-new.csv/'`
echo "$infile --> $outfile"
sed -e 's/^.*,//g' < $infile > $outfile
done
Was ist, wenn es mehrere Dateien sind? –
Möchten Sie die Ausgabe in neue Dateien zurückgeben oder nur auf dem Bildschirm ausgeben? – drewster
neue Dateien, gleicher Name –