Wie führe ich den awk-Befehl in Windows 7 aus?

Wie führe ich den awk-Befehl in Windows 7 aus?

Ich habe den folgenden adb+ awk-Befehl, der in der Linux-Umgebung einwandfrei funktioniert.[Referenz].

adb shell dumpsys package | awk -v RS='\n +Package' '/android\.permission\.CAMERA/{print $1}'

Aber ich muss diesen Befehl auf einem Windows 7-PC ausführen, derGnuWin32 GawkPaket installiert. Ich kann awk-Befehle aus dem C:\Program Files (x86)\GnuWin32\binOrdner ausführen und die adb-Befehle aus dem C:\Program Files (x86)\Android\android-sdk\platform-toolsOrdner ausführen. Ich muss den obigen Befehl ausführen und die Liste der Pakete abrufen, denen die CAMERA-Berechtigungen erteilt wurden.

Das Festlegen von Windows-Umgebungsvariablen für AWKPATH und auch in PATH-Variablen funktionierte nicht. Also habe ich einfach den Inhalt des GnuWin32-Gawk- binOrdners kopiert und in den platform-toolsOrdner eingefügt. Aber wenn ich es in der Eingabeaufforderung ausführe, erhalte ich:

awk: +Package'
awk:         ^ invalid char ''' in expression

Wie kann ich den obigen Befehl in Windows ausführen? bzw. welchen Ausdruck kann ich korrekt ausführen?

Antwort1

'Versuchen Sie, das durch zu ersetzen ". So dass der Befehl wie folgt aussieht:

adb shell dumpsys package | awk -v RS="\n +Package" "/android\.permission\.CAMERA/{print $1}"

Schauen Sie auch vorbei:Grep und Awk in Windows – Fehler „Ungültiges Zeichen im Ausdruck“

Antwort2

 It all depends on the version of GAWK you're running -- and how important it is to keep some old batch scripts working without modification.  (These days, if you're using AWK on Windows, it is almost certainly really GAWK.)  As duDE pointed out, changing the single quotes to double quotes will work -- but then you'll have to escape any double quotes inside the program.

 I just recently ran into this problem when I upgraded to GAWK 5.0.1 from v3.1.7, still running Windows 7.  (Yeah, I know...)  3.1.7 works just fine with the single quotes.  So, if you have some old scripts you want to keep without editing them or you just like the *established way* of running AWK, or just don't need whatever the newer versions bring, you might consider d/l'ing an older version.
 I don't know when it was changed, but someone dropped the ball in GAWK development somewhere between those two versions.  (I hate to say it, because I have been a pretty ardent M$ basher over the years and I have been a huge fan of public domain software and made a few contributions to the cause over the almost 30 years I've been programming and using other people's contributions.)  Truth is, we can't blame this one on Windows; it still works just fine with the old GAWK.  It's GAWK that introduced this problem.

verwandte Informationen