Регулярное выражение Sed для переменного слова в Ubuntu 14

Поскольку SSHFS основан на FUSE, проще использовать средство автомонтирования без полномочий root. Используйте предохранитель , это почти то, для чего он был разработан. Одноразовая настройка:

mkdir ~/.afuse
ln -s .afuse/raspberrypi/server_folder ~/raspberrypi

Для запуска автомонтирования:

afuse -o mount_template="sshfs %r:/ %m" -o unmount_template="fusermount -u -z %m" ~/.afuse

Убедитесь, что переменная SSH_AUTH_SOCK установлена ​​при запуске предохранителя , т.е. он должен запускаться после ssh-агент . Запустите ssh-add , чтобы загрузить ключ в агент SSH, и тогда вы сможете получить доступ к каталогам SSHFS.

2
27.09.2016, 02:25
2 ответа

Добавьте -E и удалите квадратные скобки:

$ sed -E 's/fastcgi_param WP_ENV \w+/fastcgi_param WP_ENV production/g' file
fastcgi_param WP_ENV production;

Примечания:

  1. + не поддерживается в основных регулярных выражениях. -E включает расширенное регулярное выражение, которое поддерживает + .

  2. \ w + соответствует одному или нескольким символам слова. [\ w +] соответствует любому из \ , w или + .

  3. \ w не переносится. Для совместимости с POSIX используйте:

     $ sed -E 's / fastcgi_param WP_ENV [[: alnum:]] + / fastcgi_param WP_ENV production / g' file 
    fastcgi_param WP_ENV production; 
     
  4. Вы можете избежать двойного ввода строки, используя группу захвата:

     $ sed -E 's / (fastcgi_param WP_ENV) [[: alnum:]] + / \ 1 production / g' file {{1} } fastcgi_param WP_ENV production; 
     
5
27.01.2020, 21:52

Выполните:

sed -E 's/^(([^[:blank:]]+[[:blank:]]+){2})[[:lower:]]+(.*)/\1production\3/'
  • ^ (([^ [: blank:]] + [[: blank:]] +) {2}) соответствует первым двум словам и помещает их в группу захваченных, чтобы мы могли указать группу в замене

  • [[: lower:]] + соответствует одному или нескольким символам нижнего регистра

  • (. *) соответствует оставшейся части строки и помещается в захваченную группу

  • При замене мы сохранили захваченную группу, 1 (первые два слова с завершающим пробелом) и 3 (часть после желаемых строчных букв, подлежащих замене). Между ними дается желаемая строка замены.

Пример:

% sed -E 's/^(([^[:blank:]]+[[:blank:]]+){2})[[:lower:]]+(.*)/\1production\3/' <<<'fastcgi_param WP_ENV staging;'
fastcgi_param WP_ENV production;
2
27.01.2020, 21:52

Теги

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