AWK, um mehrere Leerzeichen als Trennzeichen zu verwenden

8

Ich verwende den Befehl unten, um zwei Dateien mit den ersten zwei Spalten zu verbinden.

%Vor%

Der AWk-Befehl verwendet standardmäßig Leerzeichen als Trennzeichen. Aber meine Datei kann einen einzelnen Zwischenraum zwischen zwei Wörtern enthalten, z.

Datei 1:

%Vor%

Datei 2:

%Vor%

Ich möchte die Ergebnisdatei als;

%Vor%

Irgendwelche Hinweise?

    
Apurv 10.11.2014, 11:12
quelle

2 Antworten

19

awk unterstützt einen regulären Ausdruck als Wert von FS , sodass Sie einen regulären Ausdruck angeben können, der mindestens zwei Leerzeichen entspricht. So etwas wie -F '[[:space:]][[:space:]]+' .

%Vor%     
Etan Reisner 10.11.2014, 11:26
quelle
4

Sie verwenden Felder mit fester Breite, daher sollten Sie gnu awk FIELDWIDTHS (oder ähnlich) verwenden, um die Felder zu trennen, z. Wenn das 2. Feld die 15 Zeichen von Char 8 bis Char 23 einschließlich in dieser Datei ist:

%Vor%

Jede Lösung, die auf einer bestimmten Anzahl von Leerzeichen zwischen Feldern beruht, wird fehlschlagen, wenn Sie 1 oder 0 Leerzeichen zwischen Ihren Feldern haben.

Wenn Sie führende / nachfolgende Leerzeichen aus Ihrem Zielfeld entfernen wollen:

%Vor%     
Ed Morton 10.11.2014 14:49
quelle

Tags und Links