1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-20 18:56:39 +02:00

another example for tr -- illustrating problems with `-' in ranges..

This commit is contained in:
Jim Meyering
1999-10-02 11:46:53 +00:00
parent 6c4caf0dbf
commit 46f2e4efeb

View File

@@ -3640,14 +3640,14 @@ to remove all @samp{a}s, @samp{x}s, and @samp{M}s you would do this:
tr -d axM
@end example
However, when @samp{-} is one of those characters, it can be tricky
because @samp{-} has special meanings.
Performing the same task as above example but also
However, when @samp{-} is one of those characters, it can be tricky because
@samp{-} has special meanings. Performing the same task as above but also
removing all @samp{-} characters, we might try @code{tr -d -axM}, but
that would fail because @code{tr} would try to interpret @samp{-a} as
a command-line option. Alternatively, we could try putting the hyphen
inside the string, @code{tr -d a-xM}, but that wouldn't work either because
it'd make @code{tr} remove all characters in the range @samp{a}@dots{}@samp{x}.
it would make @code{tr} interpret @code{a-x} as the range of characters
@samp{a}@dots{}@samp{x} rather than the three.
One way to solve the problem is to put the hyphen at the end of the list
of characters:
@@ -3656,7 +3656,7 @@ tr -d axM-
@end example
More generally, use the character class notation @code{[=c=]}
where you'd put @samp{-} (or any other character) in place of the @samp{c}:
with @samp{-} (or any other character) in place of the @samp{c}:
@example
tr -d '[=-=]axM'