No one has yet posted an answer to this question in the 10 days since it was asked, so for better visibility I’m collecting the suggestions given in the comments, as well as using this as an opportunity to say something about one of the books. Regarding Bryant’s book, see my comments in this 1 June 2000 sci.math post and in this 5 January 2003 sci.math post. Regarding Grinberg’s book, I purchased a copy of his book about a year ago and I mentioned it in this 18 December 2018 Academia Stack Exchange comment, where some follow-up comments about the book can be found. See also the reviews by Katherine Thompson (MAA online review) and by Charles Ashbacher (a personal blog). Finally, I have not seen a copy of Sultan’s book and I didn’t find any reviews online just now (aside from those at amazon.com). In terms of the amount of material covered, Grinberg probably covers the least, I believe Bryant covers a little more, and Sultan clearly covers the most.
Yet Another Introduction to Analysis by Victor Bryant (1990)
The Real Analysis Lifesaver by Raffi Grinberg (2017) [Chapter 1]
A Primer on Real Analysis by Alan Sultan (2014)
Now for some comments about Grinberg’s book. Ashbacher says “… it is a bit more chatty that [sic] the usual math book, although the attempts at humor are weak”, which I agree. Ashbacher’s review gives the example It is real and perfect (just like you, you special snowflake) … (p. 119) and Thompson’s review gives the example If you hate them and want them to go away, trying [sic] saying “soupy” whenever you read $\sup;$ it might help you feel better (p. 34). However, what struck me the most as I was glancing through Grinberg’s book were the excessive, and often misplaced criticisms of other treatments of analysis (by textbooks, by teachers in general, etc.) in an apparent attempt to win over the reader. See, for example, his comments under Why I Wrote This Book in Chapter 1 that discuss his Princeton University real analysis course using Rudin’s book.
For what it's worth, to me these comments under Why I Wrote This Book seem more a criticism of his particular instructor than of Rudin’s book, since one would expect the lectures to provide the explanations and examples that he finds lacking in Rudin's book. Indeed, given that this was at Princeton University and not at University of Southern North Dakota at Hoople, I wonder if the real problem in his particular case had more to do with taking the course too early (e.g. perhaps he took it just after elementary calculus, without any prior exposure to proof-based mathematics). But his experience aside, there are certainly plenty of non-Princeton caliber students who struggle with Rudin’s book, so there is certainly an audience for the kind of book he wrote.
Because I've always been interested in issues concerning subsequential limits (e.g. see these google results for sequences and see these google hits for functions), I first looked at Chapter 17: Subsequential Limits (pp. 157-165). Near the top of p. 158 Grinberg writes:
Using the limit notation and the arrow symbol $(\rightarrow)$ for sequences that diverge to infinity is an egregious abuse of notation. We are not saying that $\{s_n\}$ converges in any way. Rather, we are saying that $\{s_n\}$ diverges and gets arbitrarily large. The only reason we use the same symbols as for convergent sequences is that it will be more convenient when defining the set of all subsequential limits (for the set to possibly include $+\infty$ and $-\infty).$
This is one of many examples throughout the book where, in my opinion, there is an excessive emphasis placed on formalism over substance. For instance, the excerpt above discusses the straw man issue of arrow usage. I say “straw man”, because since when did anyone say the arrow has to restricted in this way? Also, $n \rightarrow \infty$ shows up in Definition 14.3 back on p. 130 in the expression $\lim_{n \rightarrow \infty}p_n = p,$ and Grinberg seems to have no problems with it there. As for “substance”, while the excerpt harps on a notation convention (i.e. formalism), he writes “we are saying that $\{s_n\}$ diverges and gets arbitrarily large” which is not even correct (i.e. substance), since diverging and getting arbitrarily large means $\limsup_{n \rightarrow \infty}s_n = +\infty,$ and not the stronger statement that $\lim_{n \rightarrow \infty}s_n = +\infty$ that his comments are about. (His comments follow immediately after Definition 17.1: Diverging to Infinity.) Of course, one could argue that “gets arbitrarily large” is intended to be read as “gets and remains arbitrarily large”, but for someone just learning this, I think it is more important to be careful with something like this (i.e. consider how your wording of something could be misinterpreted) than with silly notational matters.
Speaking of being careful with wording, when I flipped back to p. 130 to see $n \rightarrow \infty$ being used, I saw the following comment:
Distinction. A limit is not a limit point. The former relates to sequences, while the latter relates to topology. These ideas are connected, though, as we will see later on in this chapter.
My issue with this is that JUST AFTER using the word “topology”, he uses the word “connected” (a standard topological term) in one of its common language uses. What makes this even worse is that the chapter just before this is Chapter 13:Perfect and Connected Sets on pp. 117-126. Now I realize this is an easy oversight to make, but making it causes his remarks about word usage and notation conventions to seem rather hypercritical to me.
And while I’m on p. 130, I happened to notice the following on p. 131 (lower middle, 2nd line in “2.”):
To prove this, we need to falsely assume that …
NO, it is NOT the case that “we need to”! This just happens to be the method of proof he uses --- proof by contradiction. One can also “prove this” without having to “falsely assume that”. Now I realize “we need to” is being used as a figure of speech (or perhaps more accurately, as a conversational transitional phrase), but in a book where the distinction between sufficient conditions and necessary conditions is so vital, a bit more care should be used in something like this. And while I’m at it, “falsely assume” seems to be misworded. To me, “falsely assume” conveys a sense that the process of making an assumption is false, which is certainly not the case. Rather, what we’re doing is making an assumption that happens to be false, which I think is conveyed better by saying “assume falsely”. Actually, my preferred way of wording this is to say “for a later contradiction, assume …” without making any claims of truth or falsity about the assumption.
OK, so after this digression on pp. 130-131, I flipped back to p. 158. Looking at p. 159 (on the right side when pp. 158-159 are open for view), I see the following:
Rant. I hate the notation “lim sup.” It is horribly confusing! The upper limit is not the limit of some kind of sequence of suprema, as the symbols might lead you to believe. Really, the upper limit is the supremum of all subsequential limits. So it should be written more like “sup lim” to help you remember. Also, the upper limit is not a limit. It is a bound on the set of subsequential limits. There’s nothing in the notation that clarifies that subsequences are involved! [The “rant” continues.]
Surely it would be more informative to tell the reader that “lim sup” is an abbreviation for “limit superior”? And the reason for the word order is that this is taken from the French phrase, where adjectives typically follow the noun. Instead of this rant, I would have preferred some discussion about how to intuitively grasp what is going on, at least temporarily without the profusion of $N$’s and $n$’s and $\epsilon$’s and double subscripted stuff that occur elsewhere in Chapter 17.
Overall I think the book is worth looking at, and I suspect a lot of people will find it helpful. However, I find myself a little put off by an excess of comments that seem to me like someone throwing stones in a glass house.