Как совместно использовать GNU sed сценарий между Linux и Mac OS X

Нет, . команда в vim не имеет истории, и при этом нет никакого вида повторной истории для нормального режима, управляет, чтобы я знал. Для наименьшего количества количества нажатий клавиш я рекомендовал бы 4oHello<Esc>3jA, World<Esc>. Если Вы уже сделали oHello<Esc>A, World<Esc>, Вы могли следовать за этим с uyy<Ctrl-r>3p.

7
15.05.2013, 01:14
3 ответа

Существует несколько опций:

  • Использовать #!/usr/bin/gsed -f (принятие его находится в /usr/bin) как хижина везде, и удостоверяются что Ваша символьная ссылка сред Linux это правильно;
  • Удалите GNUisms;
  • Символьная ссылка sed кому: /usr/bin/gsed из каталога это ранее, чем /usr/bin в пользователе $PATH (возможно опасный);
  • Сделайте сценарий обертки, который выглядит примерно так:
#!/bin/sh

script=/foo

type gsed >/dev/null 2>&1 && exec gsed -f "$script"
exec sed -f "$script"

В конечном счете там или должны быть изменения в по крайней мере одной из сред или изменения в самом сценарии.

5
27.01.2020, 20:16

У Вас мог быть Ваш sed сценарий запускается с этого вместо этого:

\:;s=sed;type gsed >/dev/null 2>&1 && s=gsed; exec "$s" -f "$0" "$@";$:s/^//

Это не в sed (хотя немного ухудшил бы Вашу производительность сценария), и при интерпретации оболочкой выполнится с gsed если найдено или sed если не (оба искали в $PATH).

5
27.01.2020, 20:16
  • 1
    , был бы \:;s=sed;command -v gsed >/dev/null && s=gsed; exec "$s" -f "$0" "$@";$:s/^// затем будьте более портативными? –  equaeghe 15.05.2013, 12:01
  • 2
    Был бы \:;`command -v gsed || command -v sed` -f "$0" "$@";$:s/^// действительно ли портативное устройство быть альтернативным? –  equaeghe 15.05.2013, 12:11
  • 3
    я не думаю command -v является значительно более портативным, чем type. Оба являются дополнительными в POSIX, требуемом Unix. Некоторые старые оболочки неPOSIX как варианты Оболочки Bourne, иметь type но нет command -v (хотя некоторые более старые не устанавливают статус выхода на ненулевой на command-not-found). posh не имеет ни одного. Я когда-то сообщил LSB, что наличие ни одного было проблемой, они подтвердили это, я, хотя они делали с этим что-то, но теперь быстро рассмотрение последней спецификации, кажется, нет никого type или command команда (!?). исправление –  Stéphane Chazelas 15.05.2013, 12:40
  • 4
    . LSB теперь передает под мандат обоих type и command (хотя я не вижу, что это говорит ли -v должен поддерживаться). Таким образом, это похоже type требуется LSB, но (возможно) нет command -v. Ответ –  Stéphane Chazelas 15.05.2013, 12:46

(Предоставление ответа на мой собственный вопрос, или скорее альтернативный подход, который будет работать в этой ситуации.)

A sed сценарий ascript.sed, даже когда они запускают с sha-удара, может также быть применен из командной строки на конечном файле target.txt как sed -f ascript.sed target.txt. Это означает это, когда на Mac OS X, можно назвать сценарий как gsed -f ascript.sed target.txt.

1
27.01.2020, 20:16

Теги

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