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

10

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

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

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

Маджид Азими
источник

Ответы:

14

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

jw013
источник