Grep und Awk in Windows Ungültiges Zeichen in Ausdrucksfehler

7

Ich bin neu in grep und awk - mit Windows 7 (ich habe grep und awk für Windows von GnuWin heruntergeladen).

Ich habe Probleme beim Ausführen dieses Skripts:

%Vor%

Ich bekomme den Fehler:

awk: '{print
awk: ^ ungültiges Zeichen '' 'in Ausdruck

Ich glaube, es könnte etwas damit zu tun haben, doppelte Anführungszeichen in Windows zu verwenden, aber ich habe alle Kombinationen ausprobiert, die mir einfallen, und trotzdem funktioniert es nicht.

Kann jemand helfen? Danke

    
Nathan 31.01.2011, 14:51
quelle

7 Antworten

4

Das Escapen von Befehlszeilenelementen ist unter Windows immer ein Problem. Als letzten Ausweg können Sie gawk -f ! Verwenden!

Also: Ihre Datei script.awk enthält:

%Vor%

Und du machst grep -Fwf dictionary.txt frequency.txt | awk -f script.awk

    
Benoit 31.01.2011, 15:06
quelle
20

Unter Windows müssen Sie doppelte Anführungszeichen verwenden, um Ihre awk-Befehle zu zitieren. Also

%Vor%

muss in

geändert werden %Vor%

Aber denken Sie daran, dass Sie keine doppelten Anführungszeichen in Anführungszeichen verwenden dürfen, Sie müssen ihnen entkommen. Unter Windows können Sie nicht einfach \ verwenden, um es zu umgehen. Sie benötigen die folgende Syntax:

%Vor%

Genau, das ist \ "" , um " in doppelten Anführungszeichen darzustellen.

    
Ogrish Man 28.11.2011 08:54
quelle
4

Sie müssen doppelte Anführungszeichen um Ihr awk-Skript verwenden und die eingebetteten Anführungszeichen in der print-Anweisung mit einem guten alten umgekehrten Schrägstrich umgehen: [g] awk "BEGIN {print \" Hallo Escape-Zeichen! \ "}"

    
ReluctantBIOSGuy 17.03.2011 13:34
quelle
1

Hier ist ein kurzes Beispiel, das eine input.csv akzeptiert, dann Ausgabe new.csv :

%Vor%     
Alex Jelenic 19.07.2013 21:57
quelle
1
___ answer4852413 ___

Das Escapen von Befehlszeilenelementen ist unter Windows immer ein Problem. Als letzten Ausweg können Sie gawk "{print """,""" }" ! Verwenden!

Also: Ihre Datei %code% enthält:

%Vor%

Und du machst %code%

    
___ qstntxt ___

Ich bin neu in grep und awk - mit Windows 7 (ich habe grep und awk für Windows von GnuWin heruntergeladen).

Ich habe Probleme beim Ausführen dieses Skripts:

%Vor%

Ich bekomme den Fehler:

awk: '{print
awk: ^ ungültiges Zeichen '' 'in Ausdruck

Ich glaube, es könnte etwas damit zu tun haben, doppelte Anführungszeichen in Windows zu verwenden, aber ich habe alle Kombinationen ausprobiert, die mir einfallen, und trotzdem funktioniert es nicht.

Kann jemand helfen? Danke

    
___ answer17756133 ___

Hier ist ein kurzes Beispiel, das eine input.csv akzeptiert, dann Ausgabe %code% :

%Vor%     
___ answer5339734 ___

Sie müssen doppelte Anführungszeichen um Ihr awk-Skript verwenden und die eingebetteten Anführungszeichen in der print-Anweisung mit einem guten alten umgekehrten Schrägstrich umgehen: [g] awk "BEGIN {print \" Hallo Escape-Zeichen! \ "}"

    
___ qstnhdr ___ Grep und Awk in Windows Ungültiges Zeichen in Ausdrucksfehler ___ answer21887772 ___

Yousui sagte:

  

... Sie können doppelte Anführungszeichen nicht in Anführungszeichen setzen, Sie müssen sie also umgehen. Unter Windows können Sie nicht einfach \ verwenden, um es zu umgehen.

während ReluctantBIOSGuy hat nur \ "in seinem Beispiel verwendet.

Ich habe sowohl \ "" als auch \ "versucht, und beide funktionieren für mich (guckt unter Windows XP sowohl in der Kommandozeile als auch in einer Batch-Datei).

Hier ist ein Beispiel mit "in der Ausgabe (ein String-Literal in c-Code):

%Vor%     
___ antwort19324299 ___

Da die eckigen Klammern in doppelte Anführungszeichen gesetzt werden müssen, sind innerhalb des eckigen Ausdrucks drei Anführungszeichen erforderlich.

Zum Beispiel:

%code%

    
___ tag123windows ___ ALLGEMEINER WINDOWS-SUPPORT IST OFF-TOPIC. Support-Fragen können unter https://superuser.com gestellt werden. Windows ist ein von Microsoft entwickeltes Betriebssystem. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Verwendung von Windows-APIs oder Windows-spezifischem Verhalten in Bezug auf Ihren Code bezieht, nicht nur, weil Sie Ihren Code unter Windows ausführen. ___ tag123grep ___ grep ist ein Befehlszeilen-Textsuchprogramm, das ursprünglich für Unix geschrieben wurde. Es verwendet reguläre Ausdrücke für die Textübereinstimmung und wird häufig als Filter in Pipelines verwendet. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Programmierung mit grep- oder grep-basierten APIs bezieht. Fragen zur Verwendung oder Problembehandlung der Befehlszeilenoptionen von Grep selbst sind off-topic. ___ tag123awk ___ AWK ist eine interpretierte Programmiersprache, die für die Textverarbeitung entwickelt wurde und in der Regel als Datenextraktions- und Berichtswerkzeug verwendet wird. AWK wird weitgehend mit Unix-Systemen verwendet. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Programmierung mit AWK- oder AWK-basierten APIs bezieht. Fragen zur Verwendung oder zur Fehlerbehebung von AWK-Befehlszeilenoptionen selbst sind nicht Thema. ___ tag123gnuwin32 ___ GnuWin stellt einem modernen MS-Windows (Microsoft Windows 2000 / XP / 2003 / Vista / 2008/7) Werkzeug-Ports mit einer GNU- oder ähnlichen Open-Source-Lizenz zur Verfügung ___ answer17091840 ___

Ich habe über die Jahre hinweg gezögert, AWK unter Windows laufen zu lassen. Es gibt Probleme mit Zitaten und Pfadbegrenzern. Meine letzte Lösung ist, "AWK frei fliegen" zu lassen, das ist frei von der Kommandozeile. Ich verstehe, dass es als ein Klebstoff für Unix-Stil Befehlszeile Juju entwickelt wurde, aber ich wollte es nur als Skriptsprache verwenden.

Alle meine AWK-Skripte enthalten eine Liste von Zielen und eine definierte Ausgabedatei. Sie können durch Doppelklicken auf eine zugehörige DOS-Batch-Datei ausgeführt werden:

%Vor%

Ein Beispiel meiner AWK-Skripte ist unten dargestellt (extrahiere alle Zeilen mit :: tab und drucke sie aus):

%Vor%

Sie können sehen, dass das Eingabeziel im Skript definiert wird und das endgültige Ausgabeziel im Skript definiert wird. Es verwendet eine temporäre ".out" -Datei, um eine große Anzahl von Druckumleitungen zu vermeiden, indem die Datei an die gewünschte Ausgabe im END-Abschnitt des Skripts kopiert wird.

Ich habe AWK-Dateien mit dieser Batch-Datei verknüpft und eine Option in meinem Editor hinzugefügt, um AWK-Dateien an die Batch-Datei zu senden.

Mit freundlichen Grüßen

    
___ answer8293464 ___

Unter Windows müssen Sie doppelte Anführungszeichen verwenden, um Ihre awk-Befehle zu zitieren. Also

%Vor%

muss in

geändert werden %Vor%

Aber denken Sie daran, dass Sie keine doppelten Anführungszeichen in Anführungszeichen verwenden dürfen, Sie müssen ihnen entkommen. Unter Windows können Sie nicht einfach \ verwenden, um es zu umgehen. Sie benötigen die folgende Syntax:

%Vor%

Genau, das ist \ "" , um " in doppelten Anführungszeichen darzustellen.

    
___
Adrian J. Fabre 11.10.2013 17:48
quelle
0

Ich habe über die Jahre hinweg gezögert, AWK unter Windows laufen zu lassen. Es gibt Probleme mit Zitaten und Pfadbegrenzern. Meine letzte Lösung ist, "AWK frei fliegen" zu lassen, das ist frei von der Kommandozeile. Ich verstehe, dass es als ein Klebstoff für Unix-Stil Befehlszeile Juju entwickelt wurde, aber ich wollte es nur als Skriptsprache verwenden.

Alle meine AWK-Skripte enthalten eine Liste von Zielen und eine definierte Ausgabedatei. Sie können durch Doppelklicken auf eine zugehörige DOS-Batch-Datei ausgeführt werden:

%Vor%

Ein Beispiel meiner AWK-Skripte ist unten dargestellt (extrahiere alle Zeilen mit :: tab und drucke sie aus):

%Vor%

Sie können sehen, dass das Eingabeziel im Skript definiert wird und das endgültige Ausgabeziel im Skript definiert wird. Es verwendet eine temporäre ".out" -Datei, um eine große Anzahl von Druckumleitungen zu vermeiden, indem die Datei an die gewünschte Ausgabe im END-Abschnitt des Skripts kopiert wird.

Ich habe AWK-Dateien mit dieser Batch-Datei verknüpft und eine Option in meinem Editor hinzugefügt, um AWK-Dateien an die Batch-Datei zu senden.

Mit freundlichen Grüßen

    
Gavin 13.06.2013 16:05
quelle
0

Yousui sagte:

  

... Sie können doppelte Anführungszeichen nicht in Anführungszeichen setzen, Sie müssen sie also umgehen. Unter Windows können Sie nicht einfach \ verwenden, um es zu umgehen.

während ReluctantBIOSGuy hat nur \ "in seinem Beispiel verwendet.

Ich habe sowohl \ "" als auch \ "versucht, und beide funktionieren für mich (guckt unter Windows XP sowohl in der Kommandozeile als auch in einer Batch-Datei).

Hier ist ein Beispiel mit "in der Ausgabe (ein String-Literal in c-Code):

%Vor%     
Rainald62 19.02.2014 17:23
quelle

Tags und Links