我想从给定的文本文件中删除所有空白。 是否有任何可用的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
"
您还可以使用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:]"
MS CSV文件也可以使用吗?
@ user3901666它将删除空格,是的,如果产生的输出将与您想要的匹配,很难说-您尝试了什么?
我认为简单得多:
sed -r 's/\s+//g' filename
香港专业教育学院只是尝试了这一点,它将修改后的文本输出到STDOUT,但不更改文件本身。
@MaxWilliams-只需将-i(破折号i)标志与sed一起使用
这不会删除换行符,不确定OP是否需要换行符。
我认为您可以使用sed擦除空间,同时又不会丢失一些信息,例如更改
到另一行。
cat hello.txt | sed '/^$/d;s/[[:blank:]]//g'
很好,但我认为我无法带我自己写tr -d"" < infile.txt > outfile.txt
您好,这很感谢,但是请您多多解释。
尝试这个:
sed -e 's/[\t ]//g;/^$/d'
(在这里找到)
第一部分删除所有制表符(\t)和空格,第二部分删除所有空行
这实际上有效。仔细解释sed -e s / [ t] // g; / ^ $ / d特别是/ ^ $ / d。我知道^是字符串的开头,$是结尾。 / d用于在使用sed时删除。但是这种解释如何导致空白的删除?
我加了一个解释。 ^$匹配空行,因为它要查找"行首"(^),然后紧接着是"行尾"($)。
如果要删除所有空格,甚至换行符:
perl -pe 's/\s+//g' file
杜德(Dude),在您的终端中输入pythontest.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
")效率更高吗?
如果后面有两个或多个空格,制表符等黑白单词怎么办?我认为您的解决方案是针对空格的开头和结尾。如果您需要一个衬板,则可以轻松转换以上代码。
尝试这个:
tr -d" \t"
有关更多详细信息,请参见tr(1)的手册页。
这可能是最简单的方法:
sed -r 's/\s+//g' filename > output
mv ouput filename
这个答案与其他答案类似,但是由于有些人一直抱怨输出到STDOUT,所以我建议将其重定向到原始文件并覆盖它。我通常不会建议这样做,但有时会快速而肮脏。
cat file.txt | tr -d" \t
"> file.txt
对我来说最简单的方法->
echo"Hello my name is Donald" | sed s/\ //g
嗯...似乎像sed -e"s/[ \t
\v]//g" < hello.txt上的东西应该在正确的范围内(无论如何在cygwin下都可以工作)。