Как я могу найти свою версию awk?


12

Если я хочу узнать версию awk, я получу следующее:

$ awk --version
awk: not an option: --version

Регистрируясь, man awkя вижу, что мой awk

mawk - язык сканирования шаблонов и обработки текста


--version - это то, что GNU изобрела для своих собственных команд, оно не является частью POSIX, и большинство команд не поддерживают --version. Однако GNU awk делает, а awk --version делает что-то разумное в моей системе. Дистрибутив fedorqui по умолчанию использует что-то отличное от GNU awk.
wingedsubmariner

@wingedsubmariner это интересная информация, которую вы дали. Спасибо! Мой awk mawk, следовательно, отсутствие version.
Федорки

Ответы:


14

В этом случае man awkпоказывает нам:

-W версия

mawk записывает свою версию и авторские права в stdout и компилирует ограничения в stderr и выходит из 0.

В моем случае,

$ awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan

compiled limits:
max NF             32767
sprintf buffer      2040

3

Я стараюсь быть более общим.

awk -Wversion 2>/dev/null || awk --version

работает независимо от того, вызывает ли awk mawk, gawk или original-awk, доступные для Debian / Ubuntu Linux. Обратите внимание, что -Wи versionдолжны быть объединены, чтобы оригинал-awk не считал versionпрограмму. В Ubuntu Linux вы можете использовать sudo update-alternatives --config awkдля просмотра и выбора реализации, которая вызывается командой awk.


Я не знаю, насколько стандартно принимать конкатенированный вариант, но нет необходимости использовать его в моем опыте: awk -W version </dev/null 2>/dev/null|awk '{print $0;nz=1}END{if(!nz)exit 1}' || awk --versionили в качестве альтернативы(s=$(awk -W version </dev/null 2>/dev/null); if [ -n "$s" ]; then printf "$s\n"; else awk --version; fi)
Ярно
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.