Мои программы работали бы на freeBSD?

Попробуйте это:

diff ... | sed -n -e '
    /^< / h
    /^---/ H
    /^> / { H; x; s/\n//g;
            s/^< #\([^#][^#]*\)#Number = Gauge32: \([0-9][0-9]*\) .* #\1#Number = Gauge32: \([0-9][0-9]*\) .* Name = STRING: \("[^"]*"\).*/Hostname=\1; old=\2 new=\3, Name=\4/;
            p; }'

Идея состоит в том, чтобы собрать все в одну строку, а затем собрать только интересные вещи.

Подробнее:

  • sed -n - не печатайте ничего по умолчанию
  • /^< / h - копируйте строки, начинающиеся с <, в пробел для удержания
  • /^---/ H - добавляйте строки, начинающиеся с ---, в пробел для удержания
  • /^> / { ... ... } - для линий, начинающихся с >, сделайте следующее:
  • H - добавьте линию к месту фиксации
  • x - поменяйте место фиксации и место фиксации
  • s/\n///g - удалите новые линии; в этой точке место фиксации держит что-то подобное: <#R1#Number = Gauge32: 258 Name = STRING: "TATA"---> #R1#Number = Gauge32: 280 Name = STRING: "TATA"
  • s/.../.../ - форматирование вывода (ничего умного здесь нет, просто sed-fu)
  • p - вывод

Это не работает для общего вывода diff, где изменения могут происходить на соседних строках. Но он отвечает на вопрос так, как вы его задали.

-4
27.01.2015, 05:21
1 ответ

Вы задаете несколько вопросов здесь.

FreeBSD может запустить программы Linux без перекомпилирования, вам придется проверить ваши. См. https://www.freebsd.org/doc/handbook/linuxemu.html

Теперь я бы перекомпировал их на FreeBSD и посмотреть, будут ли они работать - если вы можете получить их компиляцию без компилятора FreeBSD / Linker Есть хорошие шансы, которые они просто будут работать.

Как для «любых команд Linux также будет работать на FreeBSD».

Остерегайтесь, здесь, FreeBSD SED не совсем такой же, как GNU SED, например. Многие программы имеют небольшие различия, когда речь идет о поведении / параметрах. Кроме того, с «командами Linux» вы имеете в виду «инструменты Unix».

Для других читателей инструменты Unix на FreeBSD намного похоже на инструменты Unix на Дарвине (AKA Mac OS X).

4
28.01.2020, 05:20

Теги

Похожие вопросы