我有一个包含多个隐藏字符的文本文件。使用 cat -v
我可以看到它们包括以下内容;
^M
^[[A
行尾还有\n
字符。我也希望能够以某种方式显示这些内容。
然后我希望能够有选择地cut
和sed
这些隐藏的字符。我怎样才能做到这一点?
我已经尝试过 dos2unix
但这并没有帮助删除任何 ^M
字符。我还尝试了 sed s/^M//g
,其中我按下了 ctrl+v m。
原始数据
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
想要输出
也可在: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
最佳答案
试试下面的 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
new.txt
文件将包含删除的字符。
要删除 ^M 之间的字符并删除不需要的控制字符,请使用以下命令
sed "s/\r.*\r//g" org.txt | tr -cd '\11\12\40-\176' > new.txt
关于bash - 从文本文件中识别并删除特定的隐藏字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25778587/