我有文本文件,其中包含我用sed得到的隐藏字符。红宝石从整个文件中删除隐藏的字符
\033[H\033[2J\033
当我打开用vi文件,看到如下上面的代码,
^[[H^[[2J^[[H^[[2J
由于这个隐藏字符现在面临的一些问题,在处理文件。在处理它之前,有没有什么可以摆脱整个文件中的隐藏字符。
我有文本文件,其中包含我用sed得到的隐藏字符。红宝石从整个文件中删除隐藏的字符
\033[H\033[2J\033
当我打开用vi文件,看到如下上面的代码,
^[[H^[[2J^[[H^[[2J
由于这个隐藏字符现在面临的一些问题,在处理文件。在处理它之前,有没有什么可以摆脱整个文件中的隐藏字符。
如果文件大小不是太大,可以读取整个文件内容,然后删除所有转义的序列。
content = File.read('your_input_file_path')
content.gsub!(/\033\[(?:H|2J)/, '')
content.split(/\r?\n/).each do |line|
# process line
end
您可以概括根据转义序列模式使用的正则表达式。在你的例子中,它似乎是\033[
后跟一个可选数字,然后是一个字母。可更新为:
content.gsub!(/\033\[\d?[A-Z]/, '')
一种方式与ASCII值小于32(" ".ord #=> 32
)如下除去非打印字符。
def remove_invisible(infile, outfile)
File.write(outfile,
File.read(infile).
codepoints.
reject { |n| n < 32 }.
map(&:chr).
join
)
假设File.read(infile)
回报
str = "\033[H\033[2J\033"
#=> "\e[H\e[2J\e"
然后
a = str.codepoints
#=> [27, 91, 72, 27, 91, 50, 74, 27]
b = a.reject { |n| n < 32 }
#=> [91, 72, 91, 50, 74]
c = b.map(&:chr)
#=> ["[", "H", "[", "2", "J"]
c.join
#=> "[H[2J"
如何删除隐藏字符以下的字符? ^ [[5分 ^ [(B ^ [[M ^ M 至少如果我可以删除^单独的罚款。 – Karthi1234
我不明白。' “^”'是不是隐藏角色 –
对不起,这是回车 – Karthi1234
'content.gsub!(/ \ 033 \ [\ d?[AZ] /, '')'正在完善。谢谢! 如果我想删除所有种类的隐藏字符(如上面的隐藏字符不同),是否有最好的方法? – Karthi1234
@Karthick真的取决于你的真实情况,我不能在这里给出答案。 –
那就好,我明白了。谢谢你的帮助! – Karthi1234