2016-08-16 4 views
-2

Mit einer festen Satzlänge Datei und versucht, für Räume für eine Spalte von Position 134 und einer Länge von 160 für alle Räume Hier zu überprüfen ist, was ich habe:awk für Räume in Spalten Überprüfung

awk file.test |awk '{ teststr=substr($0,134,160); if (teststr ~ /^[[:space:]]*$/) {print "ALLSPACES"teststr"end"} else {print "NOTALLSPACES"teststr"end"} } ' 

Es ist immer Rückkehr des sonst Teils eventhough gibt Werte auf dem teststr sind

NOTALLSPACESTHIS IS A TESTend 
NOTALLSPACES    end 
NOTALLSPACES    end 

Was mit dem awk Statement/regex falsch ist

+0

@ Barmar..thanks mein question..Oppsie für die Unterstützung Format, das ein Tippfehler ist .. ny Befehl ist mit der Endung: aber immer noch nicht funktioniert –

+0

Ich habe dein Skript versucht und es hat funktioniert. Vergessen Sie nicht, dass die Spaltenposition 'substr()' in awk 1-basiert und nicht 0-basiert ist. – Barmar

+0

@Balmar, ich habe es wieder versucht und es hat funktioniert .. danke !!! –

Antwort

0

der Tippfehler war CAU die Frage singen ..

awk file.test |awk '{ teststr=substr($0,134,160); if (teststr ~ /^[[:space:]]*$/) {print "ALLSPACES"teststr"end"} else {print "NOTALLSPACES"teststr"end"} } ' 

TYPE die awk-Anweisung oben mit der richtigen Antwort aktualisiert: die * $ in nach dem Raum

+0

Setzen Sie die Lösung nicht in die Frage, sondern in die Antwort. – Barmar

+0

Was war der Tippfehler? Du hast gesagt, das Problem mit dem ':' war ein Tippfehler in der Frage, nicht der echte Code. – Barmar

Verwandte Themen