LINUX.ORG.RU

awk в Linux и FreeBSD ведет себя по-разному


0

1

Мне тут на форуме подсказали скрипт на awk, который должен отбрасывать некоторое количество слов с конца строки.
В Linux это работает нормально:

$ echo «first second third fourth fifth» | awk '{NF-=3;print}'
first second

Во FreeBSD не работает:

$ echo «first second third fourth fifth» | awk '{NF-=3;print}'
first second third fourth fifth

А нужно именно на FreeBSD :(
Подскажите, как заставить.

Ты идиот? В том же форуме, я уже указал, что это решение не универсальное и прокатывает только в gawk (gnu awk).

Ставь в свою *bsd gawk и пользуйся.

sdio ★★★★★ ()
Ответ на: комментарий от sdio

> Ты идиот? В том же форуме, я уже указал, что это решение не универсальное и прокатывает только в gawk (gnu awk).

Ставь в свою *bsd gawk и пользуйся.

За совет спасибо, но я все же рекомендую сходить к психологу. Такой гнев до добра не доведет.

InfectedM ()
Ответ на: комментарий от babusha

Ставь в свою *bsd gawk и пользуйся.

Ставь в свой *bsdm gawk и пользуйся.

/ Fixed

babusha ()
Ответ на: комментарий от InfectedM

Когда я гневаюсь это выглядит иначе. А это просто праведное возмущение.

sdio ★★★★★ ()

Ставить сторонние пакеты из-за нужд одного несерьёзного скрипта я бы тоже не стал.
Можно конечно и без переопределения переменной NF сделать, но выглядеть будет не так элегантно, появится некрасивый цикл по NF

Ходят слухи, на фряхе тоже что-то от людского (zsh), решение на чистом шелле - рекомендации лучших собаководов мира:

%>a=«one two three four five»
%>a=(«${(@)=a}») && echo $a[1,${#a}-3]
one two

zolden ★★★★★ ()

А всё таки, на каком средстве требуется решение? В начале (в другом топике) просили решение на bash, что то типа такого:

N=( first second third fourth fifth sixth seventh )

echo ${N[@]:0:${#N[*]}-3} #добавить проверку, что ${#N[*]} больше 2.

дали на gawk и пошли разговоры про FreeBSD...

mky ★★★★★ ()

в мане об этом написано. Различия в работе утилит - это не баг. Таких вещей очень много, например с sed:

GNU sed содержит не стандартные расширения, которые работают лишь в нем. Опция --posix заставит его, хорошего, быть как все.

Вот так, человек проработает пару лет по Линуксом, попробует затем свои скрипты на HP-UX, Solaris, *BSD - а нихрена)

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.