我想从给定的文本文件中删除所有空白。是否有任何可用的shell命令?或者,如何使用sed
用于此目的。
我想要以下内容:
$ cat hello.txt | sed ....
我试过了:cat hello.txt | sed 's/ //g'
。但是它只删除空格,而不删除制表符。
Answers:
$ 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
^$
匹配空行,因为它正在寻找“行首”(^),然后在“行尾”($)之后。
杜德(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\n\r ")
效率更高吗?
这个答案与其他答案类似,但是由于有些人一直抱怨输出到STDOUT,我只是建议将其重定向到原始文件并覆盖它。我通常不会建议这样做,但有时会快速而肮脏。
cat file.txt | tr -d " \t\n\r" > file.txt