Unshare with --mount -proc создает новое пространство имен mnt

Реализация busybox awk— единственная известная мне реализация, которая поддерживает обратные ссылки -. Он также поддерживает расширения gawkgensub()и \w:

.

Как и в случае с sub()и gsub(), вы должны использовать "..."вместо /.../и использовать \\1вместо\1(в стандарте awk, "\1"— это символ со значением 1.(^A/\1/необходимы для соответствия этому символу, в то время как "\\1"равно (хорошо было)un (der ), указанным в POSIX; также обратите внимание, что POSIX ERE не имеют обратных -ссылок, это единственная функция, которую имеют BRE, но не ERE ).

$ echo ab aa cc de mn | busybox awk '{print gensub("(\\w)\\1", "\\1\\1\\1", "g")}'
ab aaa ccc de mn

Остерегайтесь, хотя этот busybox awkне является интернационализированным , его \wсоответствует только a-zA-Z0-9_независимо от локали (то же самое для [[:alnum:]]), а многобайтовые символы -не являются поддерживается:

$ echo ee éé | busybox awk '{print gensub("(\\w)\\1", "\\1\\1\\1", "g")}'
eee éé

Со стандартными утилитами для этой работы обычно используется sed:

sed 's/\([[:alnum:]_]\)\1/&\1/g'

sedрегулярные выражения — это основные регулярные выражения, которые поддерживают обратные ссылки. Некоторые реализации sedподдерживают расширенные регулярные выражения с -rили -E, и POSIX будет указывать -Eв следующей основной версии стандарта, но по-прежнему не будет обратных ссылок (через группы захвата. на замену sбудет ). GNU и busybox sedподдерживают обратные -ссылки с -E, а FreeBSD sed— нет.

1
28.09.2021, 19:20
0 ответов

Теги

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