экранирование одной точки с двойной обратной косой чертой - awk


10

В книге "Эффективное программирование на awk" есть пример расщепления поля. вот пример:

Если вы хотите, чтобы поля были разделены литеральным периодом, за которым следует какой-либо один символ, используйте ‘FS = "\\.."’.

Почему это двойной обратный слеш? не должно ли это быть \..?

Ответы:


14

Как в строковых, так и в регулярных выражениях в awk используются одни и те же escape-символы обратной косой черты, в том числе \\для одного \. Поскольку FSэто строковое значение, которое внутренне интерпретируется как регулярное выражение, эти общие экранированные символы необходимо экранировать дважды. Таким образом, \\строка становится \к тому времени, когда она интерпретируется как регулярное выражение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.