Bash-如何从给定的文本文件中删除所有空白?

我想删除给定文本文件中的所有空白。

有可用的 shell 命令吗?

或者,如何为此目的使用 sed

我想要这样的东西:

$cat hello. txt | sed... .

我试过这个: cat hello.txt | sed 's/ //g'

但它只删除空格,而不删除制表符。

谢谢。

373136 次浏览
$ 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.

In order to wipe all whitespace including newlines you can try:

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

You can also use the character classes defined by tr (credits to htompkins comment):

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

For example, in order to wipe just horizontal white space:

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

hmm...seems like something on the order of sed -e "s/[ \t\n\r\v]//g" < hello.txt should be in the right ballpark (seems to work under cygwin in any case).

Try this:

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

(found here)

The first part removes all tabs (\t) and spaces, and the second part removes all empty lines

I think you may use sed to wipe out the space while not losing some infomation like changing to another line.

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

To apply into existing file, use following:

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

Much simpler to my opinion:

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

If you want to remove ALL whitespace, even newlines:

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

This is probably the simplest way of doing it:

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

Try this:

tr -d " \t" <filename

See the manpage for tr(1) for more details.

Easiest way for me:

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

Dude, Just python test.py in your terminal.

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()

This answer is similar to other however as some people have been complaining that the output goes to STDOUT i am just going to suggest redirecting it to the original file and overwriting it. I would never normally suggest this but sometimes quick and dirty works.

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