在Linux中从文件中删除特殊字符

5

我正尝试在Linux系统中移除一个文件里的一堆^K符号,但是所有我尝试的方法都不起作用。

我使用cat命令读取了memo.txt文件,发现它的行之间有双倍的空行。

我使用less命令查看该文件时,在每一行后面都有^K符号。

我想要将^K符号移除并将处理后的内容输出到一个新文件中。

我已经尝试过:

cat memo.txt | tr -d "\n" > memo.new
cat memo.txt | tr -d "^K" > memo.new

以及一些其他的sed函数。


3
每个角色在其自身的方式上都是特别的。 - Ignacio Vazquez-Abrams
3个回答

5
您可能想尝试类似这样的内容:

您可以尝试以下方法:

tr -d '\013' < memo.txt > memo.new

013是字符^K的八进制值。


谢谢你的回答,而不仅仅是一些手册。我知道这是为了学校,但我已经尽力了。 - BillPull
您也可以通过按下Ctrl+v,然后再按下Ctrl+K来获取该值。Ctrl+v使下一个输入提供其字面值,而不是产生其正常效果。 - Daenyth
@Jonathan Callen,你是怎么找到^K的八进制值的? - Fatima Zohra
“^A”到“^Z”是编号为1-26的字符;“K”是第11个字母,因此简单的进制转换得到八进制的“013”。 - Jonathan Callen

1

请看:

man strings

这就是我个人认为你想要的东西...


2
你觉得有必要可能摧毁整个内容,只为了完全删除一个字符吗? - Ignacio Vazquez-Abrams

0

我认为ABCD的答案会起作用。但如果不行,请尝试以下方法:

tr -d "`echo -e '\013'`" < memo.txt > memo.new

嵌入的echo命令将输出实际的^K字符,因此tr将知道确切地要删除什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接