Выполнение
sudo sh -c "echo >> somefile"
должно работать. Проблема состоит в том, что> и>> обрабатываются Вашей оболочкой, не командой "sudoed", таким образом, полномочия являются Вашими, не те пользователя Вы - "sudoing" в.
Вы ищете /.../s
модификатор, также известен как модификатор dotall . Он заставляет точку .
также для сопоставления символов новой строки, что не выполняет по умолчанию.
Плохая новость в том, что он не существует в JavaScript (он существует с ES2018, см. ниже) . Хорошая новость заключается в том, что вы можете обойти это, используя класс символов (например, \ s
) и его отрицание ( \ S
) вместе, например:
[\s\S]
Итак, в вашем если регулярное выражение будет выглядеть так:
/<div class="box-content-5">[\s\S]*<h1>([^<]+?)<\/h1>/i
Начиная с ES2018, JavaScript поддерживает флаг s
(dotAll), поэтому в современной среде ваше регулярное выражение может быть таким, как вы его написали, но с s
флаг в конце (вместо m
; m
изменяет способ работы ^
и $
, а не ).
):
/<div class="box-content-5">.*<h1>([^<]+?)<\/h1>/is
Вам нужен модификатор s
(dotall), который явно не существует в Javascript - вы можете заменить .
с [\ s \ S], как предлагает @molf.
Модификатор m
(многострочный) заставляет совпадать строки ^ и $, а не всю строку.