Как запустить команду awk в Windows 7?

Как запустить команду awk в Windows 7?

У меня есть следующая команда adb+ awk, которая будет отлично работать в среде Linux[Ссылка].

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

Но мне нужно запустить эту команду на ПК с Windows 7, на котором естьGnuWin32 Gawkпакет установлен. Я могу запустить команды awk из C:\Program Files (x86)\GnuWin32\binпапки и запустить команды adb из C:\Program Files (x86)\Android\android-sdk\platform-toolsпапки. Мне нужно запустить указанную выше команду и получить список пакетов, которые имеют разрешенные разрешения CAMERA.

Настройка переменных среды Windows для AWKPATH, а также переменных PATH не сработала. Поэтому я просто скопировал содержимое binпапки GnuWin32 gawk и вставил в platform-toolsпапку. Но когда я запускаю в командной строке, я получаю,

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

Как выполнить указанную выше команду в Windows? или Какое правильное выражение я могу использовать?

решение1

Попробуйте заменить 'на ". Так команда будет выглядеть так:

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

Взгляните также:Grep и Awk в Windows Ошибка «Недопустимый символ в выражении»

решение2

 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.

Связанный контент