Использование grep для поиска длинных серий цифр и вставки в них тонких пробелов

На моей странице у меня есть таблица с более чем 500 строк, в ней один столбец, где все ячейки содержат разные числа, такие как 55123, 666000, 3000 и 1459000 (цифры для денежных сумм). Мне нужно было бы вставлять тонкие пробелы в числа, чтобы их было легче читать, по следующей схеме:

Семь цифр подряд заменяются на: d ddd ddd (например, 1 459 000, d = цифра)

от шести до: ддд ддд (например, 666 000)

от пяти до: дд ддд (например, 55 123)

От четырех до: д ддд (например, 3000)

используя поиск/изменение, я могу найти все экземпляры, например, 7 цифр подряд с помощью строки grep \d{7}, но я потерял команду о том, как «изменить», используя найденные числа и добавив тонкий пространство в нужных местах.

Есть ли способ написать сценарий или запрос на поиск/изменение для этой операции, чтобы сделать это в любом месте текста (или только в таблице)? Любые советы по этому поводу очень ценятся!

Привет, Юлий, добро пожаловать в GD.SE! Если у вас есть какие-либо вопросы о том, как работает сайт, загляните в справочный центр или свяжитесь с одним из нас в чате графического дизайна, как только ваша репутация достигнет 20. Продолжайте вносить свой вклад и наслаждайтесь сайтом!

Ответы (1)

В движке сопоставления есть ошибка (по крайней мере, в моем дизайне), мы исправим ее в первую очередь.

  • Находить:

    (.)\Z

  • Заменять

    $1:

  • Заменить все

Хорошо, теперь у нас есть якорь в конце истории. Теперь о магии:

  • Находить:

    (\d)(?=(\d\d\d)+(:|\s))

    Объяснение соответствует любой цифре, за которой следует любая тройка цифр и : или любой пробел

  • Заменять

    $1~<

    Число и тонкое пространство

  • Заменить все

А теперь давайте закрепим конечный маркер обратно:

  • Находить:

    :\d

  • Заменять

    оставить пустым

  • Заменить все

Сделанный.

PS : можете попробовать, если (\d)(?=(\d\d\d)+\Z)работает, на моей машине не работает.