grep nach Wörtern von nicht mehr als einer bestimmten Länge

9

Ich suche nach einer Möglichkeit, Dinge zu erfassen wie: i log for E M, i 1 f x i 0, I xi 1, 3 1,.einfach basierend auf der Anzahl der Zeichen.

Nichts in dieser hypothetischen Ausgabe ist länger als drei Zeichen. Dieser hypothetische Einzeiler würde ungefähr so ​​aussehen grep -v [:alnum:] > {3}. (Außer ich weiß einfach nicht, wie ich das in grep-Syntax schreiben soll.)

ixtmixilix
quelle
Möchten Sie Zeichen wie ,und .als Teil eines Wortes abgleichen?

Antworten:

19
grep -o -w '\w\{1,3\}' data

Optionen sind:

  • -o drucke nur übereinstimmende Wörter
  • -w stimmen nur mit ganzen Wörtern überein

Es werden nur Wörter (in grep \ w = [[: alnum:]] = [A-Za-z0-9]) mit einer Länge von 1 bis 3 (angegeben durch {1,3}) gefunden.

sterben_sphynx
quelle
Vielen Dank. Die grundlegende Syntax Ihrer Antwort ist die, die ich brauchte, und am Ende habe ich nur grep '\ w \ {3}' Daten und den gleichen Befehl mit grep -v verwendet.
ixtmixilix