Frage

Guten Tag Mitglieder,

Ich habe eine Eingabedatei, die Reihen von numerischen Ziffern (fast 2000 Zeilen) hat ich will „den zweiter auf die acht Stelle von rechts“ extrahieren, aus jeder Zeile der Ziffernfolge in eine separate Datei, mit der Ergebnis durch ein Komma getrennt, wie gezeigt.

Beispiel: input.txt

00000000000001303275310752

00000000000001827380519015

00000000000000800081610361

00000000000000449481894004

00000000000000449481894004

00000000000001812612607514

Erwartetes Ergebnis: newfile.txt

7531075,

8051901,

8161036,

8189400,

8189400,

1260751,

Ich vermute, so etwas wie ‚sed‘ kann verwendet werden, um mein Problem zu lösen, aber ich bin mir nicht ganz sicher, wie dies zu erreichen, zu gehen. Ich bin verbunden mit einer Maschine läuft auf Solaris 5.10 freuen, wenn mich jemand mit einer kurzen Erklärung führen kann.

Grüße,

Anfänger.

War es hilfreich?

Lösung

Für feste Breite Eingang, versuchen Sie:

cut -c19-26 input.txt | sed 's/$/,/'

was zu sagen ist, das 19. bis 26. Charakter des Eingangs txt extrahieren und ersetzen Sie dann das Ende der Zeile mit einem Komma.

Wenn Sie mit variabler Länge Linien haben, werden Sie etwas anderes brauchen.

Andere Tipps

Sie können die führenden Nullen mit gestutzt:

sed 's/^0*//g'

So etwas wie:

sed 's/^0*//g' input.txt | sed 's/$/,/'

sollte funktionieren.

Versuchen:

perl -pe 's/^.*(\d{7})\d$/$1,/' < input.txt

Oder wenn Sie nicht regulären Ausdrücke mögen:

perl -pe '$_ = substr($_,-9,-2) . ",\n"' < input.txt

Dies ist für jede feste oder variable Länge Linie arbeiten.

Hier ist eine Lösung in Python ist, sollte es intuitiv:

$ cat data2
00000000000001303275310752
00000000000001827380519015
00000000000000800081610361
00000000000000449481894004
00000000000000449481894004
00000000000001812612607514

$ cat digits.py
import sys
for line in sys.stdin:
    print '%s,' % (line[-9:-2])

$ python digits.py < data2
7531075,
8051901,
8161036,
8189400,
8189400,
1260751,
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top