Как восстановить репозитории по умолчанию в Ubuntu 20.04?

В bash, '...'— сильные кавычки, поэтому с '\n'литерал \nпередается awk, а с '\\n'— литерал \\n. Там нет трансформации.

В awk, внутри "...", \nи \\... расширены. Итак, при передаче "\n"вgensub()(или printили что-либо вawk)это фактический символ новой строки, а при передаче "\\"это \.

Теперь gensub()также понимает свой первый аргумент как регулярное выражение, где \также имеет особое значение, которое зависит от реализации.

Что согласуется между реализациями, так это то, что регулярное выражение \\соответствует литералу \точно так же, как \.соответствует литералу .. Однако для регулярного выражения \n, соответствует ли оно символу новой строки или n, зависит от реализации. В случае gawkэто соответствует новой строке. Таким образом, и gensub("\n", "x"), и gensub("\\n", "x")заменяют символы новой строки на x, первый, потому что буквальный символ новой строки передается в gensub(), второй, потому что \nпередается в gensub(), который понимается как регулярное выражение который соответствует символу новой строки.

Обратите внимание, что спецификация POSIX имела несколько проблем, связанных с обработкой обратной косой черты в регулярных выражениях в awk. Это будет исправлено в следующей версии спецификации. Подробности см. в http://austingroupbugs.net/view.php?id=1105.

Это становится еще более запутанным при использовании /\n/вместо "\n".

0
13.01.2021, 12:52
1 ответ

Поп! _ОС и Ubuntu — разные операционные системы, хотя первая основана на второй. Если вы хотите перейти от Pop! _ОС для Ubuntu, вы должны установить Ubuntu; попытка преобразовать существующий Pop! _Установка ОС на Ubuntu приведет только к разочарованию.

1
18.03.2021, 22:37

Теги

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