Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.debian.user > #266273
| From | Greg Wooledge <greg@wooledge.org> |
|---|---|
| Newsgroups | linux.debian.user |
| Subject | Re: counting commas |
| Date | 2024-01-19 13:40 +0100 |
| Message-ID | <HXWk9-48pp-1@gated-at.bofh.it> (permalink) |
| References | <HXRkt-45zk-1@gated-at.bofh.it> <HXSqd-46bF-1@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Fri, Jan 19, 2024 at 09:25:14AM +0100, Thomas Schmitt wrote:
> An answer to this question
> https://stackoverflow.com/questions/16679369/count-occurrences-of-a-char-in-a-string-using-bash
> proposes
> echo "referee" | tr -cd 'e' | wc -c
>
> $ echo ',,,' | tr -cd ',' | wc -c
> 3
That's one way, and it's sh-compatible.
If you actually want to do it in *bash* as the URL suggests, you can
take advantages of bash's extra features, to avoid forking two new
programs plus a subshell.
unicorn:~$ string="apple,banana,cherry,date"
unicorn:~$ commas=${string//[!,]/}
unicorn:~$ echo "${#commas}"
3
In this case, I'm using the ${varname//old/new} expansion to remove
everything that isn't a comma.
But at this point, we have to wonder what the *actual* goal is. They
wanted to count the number of commas... why, exactly? Are they going
to split the input string into a list of substrings? If so, just do
that in the first place.
unicorn:~$ IFS=, read -ra list <<< "$string,"
unicorn:~$ declare -p list
declare -a list=([0]="apple" [1]="banana" [2]="cherry" [3]="date")
To understand why I added an extra comma at the end of the input
string, see <https://mywiki.wooledge.org/BashPitfalls#pf47>.
This approach needs adjustment if the input string may contain
newlines. So, please state the actual goal up front, in full, and
include a worst-case-scenario example.
Finally, if the input is actually a CSV (Comma-Separated Values)
file, which may contain fields with commas *inside* them, then none
of these approaches work. You need an actual CSV parser to handle
these files properly.
Back to linux.debian.user | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
counting commas fxkl47BF@protonmail.com - 2024-01-19 08:20 +0100
Re: counting commas John Crawley <john@bunsenlabs.org> - 2024-01-19 08:30 +0100
Re: counting commas <tomas@tuxteam.de> - 2024-01-19 09:10 +0100
Re: counting commas "Thomas Schmitt" <scdbackup@gmx.net> - 2024-01-19 09:30 +0100
Re: counting commas Michael Grant <mgrant@grant.org> - 2024-01-19 12:20 +0100
Re: counting commas Greg Wooledge <greg@wooledge.org> - 2024-01-19 13:40 +0100
Re: counting commas "Thomas Schmitt" <scdbackup@gmx.net> - 2024-01-19 16:30 +0100
Re: counting commas fxkl47BF@protonmail.com - 2024-01-19 16:40 +0100
Re: counting commas Greg Wooledge <greg@wooledge.org> - 2024-01-19 17:50 +0100
Re: counting commas fxkl47BF@protonmail.com - 2024-01-19 18:30 +0100
Re: counting commas debian-user@howorth.org.uk - 2024-01-19 18:30 +0100
Re: counting commas John Hasler <john@sugarbit.com> - 2024-01-19 21:10 +0100
Re: counting commas Nicholas Geovanis <nickgeovanis@gmail.com> - 2024-01-20 04:00 +0100
Re: counting commas Nicholas Geovanis <nickgeovanis@gmail.com> - 2024-01-20 05:00 +0100
Re: counting commas David Wright <deblis@lionunicorn.co.uk> - 2024-01-20 00:10 +0100
Re: counting commas Cindy Sue Causey <butterflybytes@gmail.com> - 2024-01-20 01:10 +0100
Re: counting commas Peter Hillier-Brook <phb@hbsys.plus.com> - 2024-01-20 01:10 +0100
Re: counting commas Curt <curty@free.fr> - 2024-01-20 18:20 +0100
Re: counting commas Greg Wooledge <greg@wooledge.org> - 2024-01-20 18:30 +0100
Re: counting commas fxkl47BF@protonmail.com - 2024-01-20 18:40 +0100
Re: counting commas Curt <curty@free.fr> - 2024-01-20 18:40 +0100
Re: counting commas David Wright <deblis@lionunicorn.co.uk> - 2024-01-20 21:10 +0100
Re: counting commas Nicholas Geovanis <nickgeovanis@gmail.com> - 2024-01-20 03:50 +0100
Re: counting commas gene heskett <gheskett@shentel.net> - 2024-01-20 06:50 +0100
Re: counting commas gene heskett <gheskett@shentel.net> - 2024-01-20 07:00 +0100
Re: counting commas "Roy J. Tellason, Sr." <roy@rtellason.com> - 2024-01-20 21:40 +0100
Re: counting commas gene heskett <gheskett@shentel.net> - 2024-01-20 22:10 +0100
Re: counting commas John Hasler <john@sugarbit.com> - 2024-01-21 01:10 +0100
Re: counting commas gene heskett <gheskett@shentel.net> - 2024-01-21 01:20 +0100
Re: counting commas John Hasler <john@sugarbit.com> - 2024-01-21 01:30 +0100
Re: counting commas gene heskett <gheskett@shentel.net> - 2024-01-21 02:10 +0100
csiph-web