2016-06-21 11 views
0

Ich habe eine Frage zu Grep.Abrufen von Teilzeichenfolge mit Grep

Ich habe einige Adressdaten in einer Asc-Datei als einfachen Text. Die ersten 30 Zeichen sind für den Namen. Wenn der Name kürzer als die 30 Zeichen Leerzeichen ist, füllen Sie ihn aus, um sicherzustellen, dass seine Länge 30 ist. An Position 31 ist ein Leerzeichen, um den Namen von den nächsten Daten, die die Adresse sind, zu trennen. Nach der Adresse ist auch ein Leerzeichen und einige andere Daten. Mein Plan ist, die Adresse abzurufen, die bei Index 32 beginnt und Index 50 fortsetzt. Ich habe meist nur nichts oder die Daten, die an dem Anfang der Zeile beginnen, erhalten. Ich habe versucht, verschiedene Methoden wie

grep -iE '^.{30}' '.{8}$' myfile.asc 

oder

grep –o -P '^.{31,34}' myfile.asc 

Ich kann nicht für ein bestimmtes Muster suchen, da jeder Satz von Daten unterschiedlich mit Ausnahme der Leerzeichen ist, die die Daten trennen. Ist es möglich, meine Teilzeichenfolge so wiederherzustellen, ohne auf andere Methoden durch eine Pipe angewiesen zu sein? Ich bevorzuge es, grep zu verwenden, da Leistung ein Problem ist.

+0

Ich denke, 'sed' könnte dafür besser geeignet sein. –

Antwort

0

Warum benutzen Sie nicht cut statt grep, wenn Sie mit festen Positionen arbeiten?

cut -c 32-50 myfile.asc