我想从给定的文本文件中删除所有空格。有没有可用的shell命令?或者,如何将sed
用于此目的。
我想要以下内容:
$ cat hello.txt | sed ....
我试过这个:cat hello.txt | sed 's/ //g'
。但是它只删除了空格,而不是标签。
答案 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)
答案 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