如何从给定的文本文件中删除所有空格

时间:2012-03-31 06:03:01

标签: linux bash sed

我想从给定的文本文件中删除所有空格。有没有可用的shell命令?或者,如何将sed用于此目的。

我想要以下内容:

  

$ cat hello.txt | sed ....

我试过这个:cat hello.txt | sed 's/ //g'。但是它只删除了空格,而不是标签。

11 个答案:

答案 0 :(得分:92)

$ man tr
NAME
    tr - translate or delete characters

SYNOPSIS
    tr [OPTION]... SET1 [SET2]

DESCRIPTION
   Translate, squeeze, and/or delete characters from standard 
   input, writing to standard output.

为了擦除包括换行符在内的所有空格,您可以尝试:

cat file.txt | tr -d " \t\n\r" 

您还可以使用tr定义的字符类(htompkins评论的信用):

cat file.txt | tr -d "[:space:]"

例如,为了擦除水平空白区域:

cat file.txt | tr -d "[:blank:]"

答案 1 :(得分:15)

我认为更简单:

sed -r 's/\s+//g' filename

答案 2 :(得分:11)

我认为你可以使用sed消除空间,同时不会丢失一些信息,比如改变 到另一条线。

cat hello.txt | sed '/^$/d;s/[[:blank:]]//g'

答案 3 :(得分:4)

如果您想删除所有空白,甚至是换行符:

perl -pe 's/\s+//g' file

答案 4 :(得分:3)

试试这个:

sed -e 's/[\t ]//g;/^$/d' 

(找到here

第一部分删除所有标签(\t)和空格,第二部分删除所有空行

答案 5 :(得分:2)

这可能是最简单的方法:

sed -r 's/\s+//g' filename > output
mv ouput filename

答案 6 :(得分:2)

试试这个:

tr -d " \t" <filename

有关详细信息,请参阅tr(1)的联机帮助页。

答案 7 :(得分:2)

Dude,你的终端只是python test.py。

f = open('/home/hduser/Desktop/data.csv' , 'r')

x = f.read().split()
f.close()

y = ' '.join(x)
f = open('/home/hduser/Desktop/data.csv','w')
f.write(y)
f.close()

答案 8 :(得分:1)

嗯......似乎sed -e "s/[ \t\n\r\v]//g" < hello.txt的顺序应该在正确的球场上(在任何情况下似乎都在cygwin下工作)。

答案 9 :(得分:1)

对我来说最简单的方法 - &gt;

        echo "Hello my name is Donald" | sed  s/\ //g

答案 10 :(得分:1)

这个答案与其他人类似,但有些人一直抱怨输出转到STDOUT我只是建议将其重定向到原始文件并覆盖它。我通常不会建议,但有时快速和肮脏的作品。

cat file.txt | tr -d " \t\n\r" > file.txt