2016-04-04 2 views

Antwort

0
awk -F "<regex>" ... 

Es ist kein mehrspaltigen Begrenzer, ist ein regulärer Ausdruck

einfacher regex, wie Spiel dieser einzelnen Zeichen sind, was Sie, verwenden bekommen, aber nicht alles.

1

Das Problem ist, dass jedes Zeichen in Ihrem Trennzeichen ist ein regexp metacharacter, damit Sie sie brauchen, um zu entkommen, wenn angemessen, so awk kennt man sie buchstäblich behandelt werden soll. Dies könnte zu viel des Guten:

awk -F'\\|\\^\\^\\|' 'NF!=3' file.txt 

aber ich kann es nicht testen, da Sie nur eine Zeile der Eingabe vorgesehen ist, nicht die Auswahl der Linien die von denen einige nicht/nicht, dass passen würde erforderlich, zu prüfen, Skript.

+0

würden wir benutze '\\', um dem Anker zu entkommen? – haifzhan

+0

Ja. Ich habe meine Antwort aktualisiert. –

+0

Danke. Das hat perfekt funktioniert. –

0

Eine Möglichkeit ist es, alle regex Zeichen zu entkommen als @Ed Morton beantwortet.

Alternativ können Sie alle |^^| mit einem einzelnen Zeichen ersetzen, die nie in der Datei Inhalt zeigt, hier sagen wir mal ein Komma

sed 's/|^^|/,/g' file.txt 
[email protected],xyz,307 

Der Befehl

sed 's/|^^|/,/g' file.txt | awk -F, 'NF != 3'

Verwandte Themen