从文本文件中识别并删除特定的隐藏字符

p01*_*14k 5 unix bash sed

我有一个包含几个隐藏字符的文本文件。使用cat -v我可以看到它们包括以下内容;

^M

^[[A

\n行尾也有字符。我希望能够以某种方式显示这些。

然后我希望能够有选择地cutsed这些隐藏字符。我怎样才能做到这一点?

我试过了,dos2unix但这并没有帮助删除任何^M字符。我也试过sed s/^M//g按下ctrl+vm


原始数据

cat -v原始数据的输出,也可从以下网址获得:http : //pastebin.com/Vk2i81JC

^MCopying non-tried blocks... Pass 1 (forwards)^M^[[A^[[A^[[Arescued:         0 B,  errsize:       0 B,  current rate:        0 B/s
   ipos:         0 B,   errors:       0,    average rate:        0 B/s
   opos:         0 B, run time:       1 s,  successful read:       1 s ago
^MFinished
Run Code Online (Sandbox Code Playgroud)

想要的输出

也可在:http : //pastebin.com/wfDnrELm

rescued:         0 B,  errsize:       0 B,  current rate:        0 B/s
   ipos:         0 B,   errors:       0,    average rate:        0 B/s
   opos:         0 B, run time:       1 s,  successful read:       1 s ago
Finished
Run Code Online (Sandbox Code Playgroud)

Ram*_*Ram 8

尝试以下tr用于翻译或删除字符的命令。下面的命令删除引号中八进制指定的字符以外的所有字符

八进制 \12 - 换行符 (\n),八进制 \11 - TAB(^I),八进制 \40-\176 - 是很好的字符。

有关八进制值的完整参考,请参阅此页面:https : //courses.engr.illinois.edu/ece390/books/labmanual/ascii-code-table.html

tr -cd '\11\12\40-\176' < org.txt > new.txt
Run Code Online (Sandbox Code Playgroud)

该文件new.txt将包含删除的字符。

要删除 ^M 之间的字符并删除不必要的控制字符,请使用以下命令

sed "s/\r.*\r//g" org.txt | tr -cd '\11\12\40-\176' > new.txt
Run Code Online (Sandbox Code Playgroud)