使用sed,perl,awk,tr或任何东西仅删除文本文件中的单个空格

时间:2013-11-30 19:05:21

标签: perl bash sed awk ed

我有一个相当大的文本文件,每个字符之间都有一个额外的空格;

I t   l o o k s   l i k e   t h i s .  

我想删除那些额外的字符,所以

It looks like this. 

通过Linux终端。 在没有删除所有空格的情况下,我似乎无法找到这样做。我愿意在这一点上尝试任何解决方案。我很欣赏任何朝着正确方向的推动。

5 个答案:

答案 0 :(得分:4)

$ echo 'I t   l o o k s   l i k e   t h i s .  ' | sed 's/\(.\) /\1/g'
It looks like this. 

答案 1 :(得分:3)

您确定中间字符是空格吗?这很可能是UTF-16文件。

我建议您使用功能强大的编辑器将其打开并将其转换为UTF-8。

答案 2 :(得分:3)

awk解决方案

echo "I t   l o o k s   l i k e   t h i s ." | awk '{for (i=1;i<=NF;i+=2) printf $i;print ""}' FS=""
It looks like this.

答案 3 :(得分:1)

只要你想摆脱其他所有角色,就可以使用python。

>>> s = "I t   l o o k s   l i k e   t h i s ."
>>> print s[0::2]
It looks like this.

如果要对文本文件执行此操作,请执行以下操作:

with open("/path/to/file.txt") as f:
    f = f.readlines()

with open("/path/to/new.txt") as g:
    for i in f:
        g.write(str(i)[0::2]+"\n")

答案 4 :(得分:1)

perl -pe 's|(\s+)| " "x (length($1)>1) |ge' file