mehrere Feldtrennzeichen in awk

8

Ich habe diese Zeichenfolge

%Vor%

Ich möchte es mit Zahlen trennen und über sie iterieren, danke habe versucht, Feldtrennzeichen ohne Erfolg zu verwenden, wie kann ich es mit awk tun?

    
ilansh 27.03.2013, 17:01
quelle

4 Antworten

14

Versuchen Sie Folgendes:

%Vor%

Das Feldtrennzeichen FS (der Schalter -F ) kann ein Zeichen, ein Wort, eine Regex oder eine Klasse von Zeichen sein.

Sie können das auch verwenden:

%Vor%

Erklärungen

  • foo|bar|base ist eine Regex, in der sie mit allen Strings übereinstimmen kann, die durch | getrennt sind.
  • in }+|{+| , haben wir die Wahl zwischen einem Literal } mindestens einem: + oder einem Literal { mindestens einem: + oder einem Leerzeichen.
  • Sie können auch eine Klasse von Zeichen verwenden, um das gleiche zu tun: [{} ] , beide funktionieren
Gilles Quenot 27.03.2013, 17:14
quelle
1

Wenn Sie nur jede Nummer in einer neuen Zeile anzeigen möchten, verwenden Sie einfach grep :

%Vor%     
Chris Seymour 28.03.2013 12:23
quelle
1

Eine Möglichkeit mit awk:

%Vor%

In der obigen Zeile haben wir diese Zahlen durchgegangen, aber ich habe nichts Besonderes gemacht, nur gedruckt. Sie könnten Ihre Logik zu diesem Teil hinzufügen.

Ausgabe:

%Vor%     
Kent 27.03.2013 17:17
quelle
0

Zugegeben, ich bin sehr einfältig in meinem Angebot. Meiner Erfahrung nach sind die Regex-Beispiele für das Feldtrennzeichen am wertvollsten zu lernen, besonders wenn Sie mit XML usw. umgehen müssen. Aber in diesem Fall müssen wir uns daran erinnern, dass UNIX Ihnen viele Alternativen bietet wenn sie mit irrelevanten Charakteren konfrontiert werden. Eine einfache Lösung besteht darin, nur die unerwünschten Zeichen zu entfernen. Es gibt verschiedene Möglichkeiten, aber ich würde tr -d '{}' so verwenden:

%Vor%

Das Starten des Schleifenzählers i at 2 ist nur eine schnelle Möglichkeit, das erste Argument ( -foo ) zu überspringen.

    
David Hull 07.11.2013 19:47
quelle

Tags und Links