Does anyone know how to use Sed to delete all blank spaces in a text file? I haven been trying to use the "d" delete command to do so, but can't seem to figure it out
3 Answers
What kind of "space"?
To "delete all blank spaces" can mean one of different things:
- delete all occurrences of the space character, code
0x20
. - delete all horizontal space, including the horizontal tab character, "
\t
" - delete all whitespace, including newline, "
\n
" and others
The right tool for the job
If sed
it not a requirement for some hidden reason, better use the right tool for the job.
The command tr
has the main use in translating (hence the name "tr") a list of characters to a list of other characters. As an corner case, it can translate to the empty list of characters; The option -d
(--delete
) will delete characters that appear in the list.
The list of characters can make use of character classes in the [:...:]
syntax.
tr -d ' ' < input.txt > no-spaces.txt
tr -d '[:blank:]' < input.txt > no-spaces.txt
tr -d '[:space:]' < input.txt > no-spaces.txt
When insisting on sed
With sed, the [:...:]
syntax for character classes needs to be combined with the syntax for character sets in regexps, [...]
, resulting in the somewhat confusing [[:...:]]
:
sed 's/ //g' input.txt > no-spaces.txt
sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
sed 's/[[:space:]]//g' input.txt > no-spaces.txt

- 13,065
- 5
- 49
- 65
You can use this to remove all whitespaces in file
:
sed -i "s/ //g" file

- 5,554
-
3
-
-
1
-
2
-
I use
sed "s: ::g"
when i'mgrep
ing things, what's the difference between the two expression notations? – starscream_disco_party Apr 20 '17 at 01:13 -
1@starscream_disco_party: it‘s the same. You can replace all 3
/
with a different character, e.g.:sed "ss ssg"
– Cyrus Apr 20 '17 at 05:17 -
You may want to try without the
-i
flag (--in-place
) first — pipe|
toless
for instance. – user598527 Apr 07 '23 at 09:59
perhaps this way too late, but sed takes regular expression as input. '\s' is the expression of all whitespaces. So sed s/'\s'//g
should do the job. cheers

- 41
tr -d ' ' < input.txt > no-spaces.txt
. – Sky Sep 04 '16 at 18:50tr
now. (Do you see it anywhere else?) – Volker Siegel Nov 15 '16 at 23:20[:space:]
does not strip all unicode spaces. – starbeamrainbowlabs Apr 29 '21 at 21:10