我有一行看起来像这样:
some.com *.some.com
该空格看起来是一个制表符空格,因为当我移动键盘箭头时,一次移动就会将我移动到它的末尾(它似乎不是多个空格,因为多个空格需要我多次移动键盘箭头)。
这个空间给我带来了问题。我需要:
找到它是什么?
将其替换为单个空格。
这个怎么做?我尝试删除多个空格,但这似乎是无法删除的单个字符。
编辑:
只是附加信息。使用这一行的程序抱怨:Invalid control character
答案1
这是一个制表符。
tr -s '[:blank:]' ' ' <file >newfile
这将用于用tr
单个空格替换文件中的任何制表符或空格。输出中的多个空格将被压缩为单个空格。结果写入到newfile
.
要将单个制表符替换为单个空格,请使用
tr '\t' ' ' <file >newfile
答案2
要查看该字符是什么:
less -r sourcefile
或者
od -c sourceFile
以获得更详细的视图。
unix-linux-sed-ascii-control-codes-nonprintable
要sed
找出有问题的控制代码:
sed 's/'`echo "\033"`'/ /g'
where\033
被替换为实际存在的内容。
答案3
你最终也可以使用这种方式
sed -E "s,[[:space:]]+, ,g" /tmp/test
这将用单个“空格”替换任何单个或多个“空白”(空格、制表符)
$ cat /tmp/test
sdfsdfsdf sdfsdfsdfsd
sdflksjdf sdfélsdkfésldkf ss
结果
$ sed -E "s,[[:space:]]+, ,g" /tmp/test
sdfsdfsdf sdfsdfsdfsd
sdflksjdf sdfélsdkfésldkf ss