Как убрать управляющие символы в ruby - PullRequest
0 голосов
/ 19 мая 2019

Я использовал Open3 для получения результата такой команды:

Open3.popen3(service_command) do |stdin, stdout, stderr|
    result = stdout.read.delete(' ').split("\n")
end

В строке, возвращенной в stdout.read Я обнаружил, что есть управляющие символы, такие как \e[2K, как я могу удалить их и получить "чистые" строки?

Спасибо

1 Ответ

2 голосов
/ 19 мая 2019

Похоже, что это последовательности CSI (https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_sequences)

Вы можете удалить их следующим образом:

REGEXP = /\e\[[^\x40-\x7E]*[\x40-\x7E]/
input = ["\e[mstring1", "\e[2Kstring2", "string3", "\e[2Kstrin4"]


def remove_csi(line)
  line.gsub(REGEXP, "")
end

output = input.map do |line|
  remove_csi(line)
end

p input
p output

# => ["\e[mstring1", "\e[2Kstring2", "string3", "\e[2Kstrin4"]
# => ["string1", "string2", "string3", "strin4"]

Регулярное выражение - это упрощенная версия, которая соответствует началу строки вверхдо "последнего байта" в последовательности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...