【发布时间】:2012-04-14 18:09:53
【问题描述】:
我想删除给定文本文件中的所有空格。是否有任何可用的 shell 命令?或者,如何为此使用sed。
我想要类似下面的东西:
$ cat hello.txt | sed ....
我试过这个:cat hello.txt | sed 's/ //g'。但它只删除空格,而不是制表符。
【问题讨论】:
-
“全空白”,你的意思是换行吗?
我想删除给定文本文件中的所有空格。是否有任何可用的 shell 命令?或者,如何为此使用sed。
我想要类似下面的东西:
$ cat hello.txt | sed ....
我试过这个:cat hello.txt | sed 's/ //g'。但它只删除空格,而不是制表符。
【问题讨论】:
$ 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:]"
【讨论】:
tr定义的字符类。示例:删除所有空格:cat file.txt | tr -d "[:space:]"删除所有水平空格:cat file.txt | tr -d "[:blank:]"
在我看来要简单得多:
sed -r 's/\s+//g' filename
【讨论】:
我认为您可以使用 sed 清除空间,同时不会丢失一些信息,例如更改 到另一行。
cat hello.txt | sed '/^$/d;s/[[:blank:]]//g'
【讨论】:
tr -d " " < infile.txt > outfile.txt
【讨论】:
^$ 匹配一个空行,因为它正在寻找“行首”(^),然后是“行尾”($)。
如果您想删除 ALL 空格,甚至换行符:
perl -pe 's/\s+//g' file
【讨论】:
此答案与其他答案相似,但是由于有些人一直抱怨输出到 STDOUT,我只是建议将其重定向到原始文件并覆盖它。我通常不会建议这样做,但有时会进行快速而肮脏的工作。
cat file.txt | tr -d " \t\n\r" > file.txt
【讨论】:
对我来说最简单的方法:
echo "Hello my name is Donald" | sed s/\ //g
【讨论】:
伙计,在你的终端中只需要 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()
【讨论】:
f.read().strip("\t\n\r ")不是更有效率吗?
这可能是最简单的方法:
sed -r 's/\s+//g' filename > output
mv ouput filename
【讨论】:
试试这个:
tr -d " \t" <filename
有关详细信息,请参阅 tr(1) 的手册页。
【讨论】:
嗯...似乎sed -e "s/[ \t\n\r\v]//g" < hello.txt 的顺序应该在正确的范围内(无论如何似乎都可以在 cygwin 下工作)。
【讨论】: