From: Jim Meyering Date: Sat, 2 Oct 1999 11:42:26 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: FILEUTILS-4_0j-trial~193 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6c4caf0dbfc4421270627f48bfcee585cc59cc12;p=thirdparty%2Fcoreutils.git *** empty log message *** --- diff --git a/doc/textutils.texi b/doc/textutils.texi index 52ef66e3cf..16dd7d5a4d 100644 --- a/doc/textutils.texi +++ b/doc/textutils.texi @@ -3632,6 +3632,39 @@ cat "$@@" \ | uniq -d @end example +@item +Deleting a small set of characters is usually straightforward. For example, +to remove all @samp{a}s, @samp{x}s, and @samp{M}s you would do this: + +@example +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 +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}. +One way to solve the problem is to put the hyphen at the end of the list +of characters: + +@example +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}: + +@example +tr -d '[=-=]axM' +@end example + +Note how single quotes are used in the above example to protect the +square brackets from interpretation by a shell. + @end itemize