Как передать путь к файлу через вызов к жемчугу от удара?

[118237] Похоже, это выполняет то, что вы ищете.

Следующие ресурсы неоценимы при работе с XKB (я дал ссылку на зеркала WayBack Machine на этих страницах для будущего):

Недостоверное руководство по конфигурации XKB Дага Палмера [119062]

compiz-manager

Заметки Ивана Паскаля [119064]Заметки по расширению клавиатуры X

1
13.04.2017, 15:36
1 ответ

Первый вопрос заключается в том, что каталог $ содержит косые, которые также используются в качестве разделителя для оператора замещения ( S /// ). В основном, если каталог / Home / JE_B , какой Perl видит:

 perl -i -pe "s/foo//home/jb/ if \$. == 4" file.txt

требуется / из / Home Вторым / оператора /// . Самое простое решение состоит в том, чтобы использовать другой символ вместо / :

perl -i -pe "s#foo#${directory}#" file.txt

Вы также можете упростить другими способами. Рассмотрим это:

perl -pe "s#(path_root_abs = \")(.*)#\1${directory}\"# if \$. == 4" file
  • Нет необходимости в \ S , когда вам нужно только соответствовать одному пространству, просто используйте космос.
  • Оператор замены Perl понимает оба $ 1 и \ 1 , поэтому используйте последние и избегайте выхода.
  • Нет смысла захватить характер «. Если вы знаете, что это там, добавьте его сами.

Наконец, вы также можете получить PWD от Perl напрямую. Perl Имеет доступ ко всем экспортированным переменным оболочке через % Env хэш хеш . Итак, вы могли бы просто сделать:

perl -pe 's#(path_root_abs = ").*#$1$ENV{PWD}"# if $.==1' file
3
27.01.2020, 23:27

Теги

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