我有文本文件,其中包含我用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