Counting number of single quotes in a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Counting number of single quotes in a string
# 1  
Old 01-09-2015
Counting number of single quotes in a string

i need to be able to count the number of single quotes
Code:
 '

in the entire string below:

Code:
"description":"DevOps- Test VM's, System Admins Test VM's ",

awk can most likely do this, but here's my attempt using egrep:

Code:
echo "${STRING}" | egrep -wc '"'"\'"'"'

or

Code:
echo "${STRING}" | egrep -wc ".*\'"

both of which do not even come close to doing what i want.
# 2  
Old 01-09-2015
Code:
echo "${STRING}" | awk -F"'" '{print NF-1}'

These 4 Users Gave Thanks to vgersh99 For This Post:
# 3  
Old 01-09-2015
Another one:
Code:
echo "${STRING}" | tr -cd "'" | wc -c

This User Gave Thanks to MadeInGermany For This Post:
# 4  
Old 01-09-2015
Hi.

Also:
Code:
echo "$string" | tr -cd "'" | wc -c

producing:
Code:
2

for:
Code:
string="\"description\"":"\"DevOps- Test VM's, System Admins Test VM's \"",
$ echo "$string"
"description":"DevOps- Test VM's, System Admins Test VM's ",

Best wishes ... cheers, drl
This User Gave Thanks to drl For This Post:
# 5  
Old 01-09-2015
Longhand using builtins only and no pipes:-
(OSX 10.7.5 default bash terminal.)
Code:
#!/bin/bash
# Ensure string is complete!
txt=$(echo \"description\":\"DevOps- Test VM\'s, System Admins Test VM\'s \",)
echo "$txt"
subtext=""
char=0
count=0
while [ $char -lt ${#txt} ]
do
	subtext=$(printf "%02X" "'${txt:$char:1}")
	if [ "$subtext" == "27" ]
	then
		count=$((count+1))
	fi
	char=$(($char+1))
done
echo "Single quote occurs $count times..."

Results:-
Code:
AMIGA:barrywalker~/Desktop/Code/Shell> ./single_quote.sh
"description":"DevOps- Test VM's, System Admins Test VM's ",
Single quote occurs 2 times...
AMIGA:barrywalker~/Desktop/Code/Shell> _

EDIT:
Modified code to remove absolute (0X)27 value...
Code:
#!/bin/bash
# Ensure string is complete!
txt=$(echo \"description\":\"DevOps- Test VM\'s, System Admins Test VM\'s \",)
echo "$txt"
subtext=""
chr=$(printf "%02X" "''")
char=0
count=0
while [ $char -lt ${#txt} ]
do
	subtext=$(printf "%02X" "'${txt:$char:1}")
	if [ "$subtext" == "$chr" ]
	then
		count=$((count+1))
	fi
	char=$(($char+1))
done
echo "Single quote occurs $count times..."


Last edited by wisecracker; 01-09-2015 at 06:11 PM..
These 2 Users Gave Thanks to wisecracker For This Post:
# 6  
Old 01-11-2015
Code:
#!/bin/bash

declare -i char=0 count=0 len=0

txt=$(echo \"description\":\"DevOps- Test VM\'s, System Admins Test VM\'s \",)
echo "$txt"
len=${#txt}

while (( char < len )) 
do
    [[ ${txt:char:1} == "'" ]] && (( count++ ))
    (( char++ ))
done

echo "Single quote occurs $count times..."

This User Gave Thanks to fpmurphy For This Post:
# 7  
Old 01-11-2015
Quote:
Originally Posted by wisecracker
Longhand using builtins only and no pipes:-
(OSX 10.7.5 default bash terminal.)
Code:
	subtext=$(printf "%02X" "'${txt:$char:1}")

I hate to bring the bad news but this is a subshell, not a builtin. This way your script takes perhaps eons more than any single pipeline (which is pretty similar to a subshell call).

Your idea can be realized using builtins only, like this (the following uses ksh88, but should work in bash the same way):

Code:
#! /bin/ksh

typeset chString="\"description\":\"DevOps- Test VM\'s, System Admins Test VM\'s \""
typeset chBuffer=""
typeset chRemainder
typeset -i iCnt=0

while [ -n "$chString" ] ; do
     chRemainder="${chString#?}"               # "abc" -> "bc"
     chBuffer="${chString%${chRemainder}}"     # "abc" -> "a"
     chString="$chRemainder"                   # "abc" -> "bc"

     if [ "$chBuffer" == "'" ] ; then
          (( iCnt += 1 ))                      # in bash use (( iCnt++ ))
     fi
done

echo "$iCnt"

exit 0

I hope this helps.

bakunin
These 2 Users Gave Thanks to bakunin For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace double quotes with a single quote within a double quoted string

Hi Froum. I have tried in vain to find a solution for this problem - I'm trying to replace any double quotes within a quoted string with a single quote, leaving everything else as is. I have the following data: Before: ... (32 Replies)
Discussion started by: pchang
32 Replies

2. Shell Programming and Scripting

Issue with Single Quotes and Double Quotes for prompt PS1

Hi, Trying to change the prompt. I have the following code. export PS1=' <${USER}@`hostname -s`>$ ' The hostname is not displayed <abc@`hostname -s`>$ uname -a AIX xyz 1 6 00F736154C00 <adcwl4h@`hostname -s`>$ If I use double quotes, then the hostname is printed properly but... (3 Replies)
Discussion started by: bobbygsk
3 Replies

3. Shell Programming and Scripting

Counting number of records with string row delimiter

HI, i have a file like this t.txt f1|_f2|_ f1|_f2|_ f1|_f2|_ as if col delimiter is |_ and row delimiter |_\n trying to count number of records using awk $ awk 'BEGIN{FS="|_" ; RS="~~\n"} {n++}END{print n} ' t.txt 7 wondering how can i count this to 3 ? thx (9 Replies)
Discussion started by: aksforum
9 Replies

4. Shell Programming and Scripting

Having a terrible problem with quotes/single quotes!

Hello. I'm trying to write a bash script that uses GNU screen and have hit a brick wall that has cost me many hours... (I'm sure it has something to do with quoting/globbing, which is why I post it here) I can make a script that does the following just fine: test.sh: #!/bin/bash # make... (2 Replies)
Discussion started by: jondecker76
2 Replies

5. UNIX for Dummies Questions & Answers

grep single quotes or double quotes

Unix superusers, I am new to unix but would like to learn more about grep. I am very familiar with regular expressions as i have used them for searching text files in windows based text editors. Since I am not very familiar with Unix, I dont understand when one should use GREP with the... (2 Replies)
Discussion started by: george_vandelet
2 Replies

6. Shell Programming and Scripting

Counting the number of occurances of all characters (a-z) in a string

Hi, I am trying out different scripts in PERL. I want to take a line/string as an input from the user and count the number of occurrances of all the alphabets (a..z) in the string. I tried doingit like this : #! /opt/exp/bin/perl print "Enter a string or line : "; $string = <STDIN>; chop... (5 Replies)
Discussion started by: rsendhilmani
5 Replies

7. UNIX for Dummies Questions & Answers

Add single quotes in string

Hi All, I love this site, it helps newbie people like me and I appreciate everyone's help! Here is my questions. I am trying to concatenate a single quote into a character/string from a text file for each line (lets say ABC should look like 'ABC'). I tried to use awk print command to do... (1 Reply)
Discussion started by: mrjunsy
1 Replies

8. Shell Programming and Scripting

Double quotes or single quotes when using ssh?

I'm not very familiar with the ssh command. When I tried to set a variable and then echo its value on a remote machine via ssh, I found a problem. For example, $ ITSME=itsme $ ssh xxx.xxxx.xxx.xxx "ITSME=itsyou; echo $ITSME" itsme $ ssh xxx.xxxx.xxx.xxx 'ITSME=itsyou; echo $ITSME' itsyou $... (3 Replies)
Discussion started by: password636
3 Replies

9. UNIX for Dummies Questions & Answers

count the number of files which have a search string, but counting the file only once

I need to count the number of files which have a search string, but counting the file only once if search string is found. eg: File1: Please note that there are 2 occurances of "aaa" aaa bbb ccc aaa File2: Please note that there are 3 occurances of "aaa" aaa bbb ccc... (1 Reply)
Discussion started by: sudheshnaiyer
1 Replies

10. Shell Programming and Scripting

problem with single quotes in a string and findbug

I'm having trouble manipulating a string that contains single quotes (') in it. I'm writing a ksh script to parse in a few queries from a config file, such as this: findbug \(\(Project 'in' "Deployment,HDRCI,LHS,LSS,WUCI" '&&' Status 'in' "N" '&&' New_on 'lessthan' "070107" \)\) '&&' \(Class... (9 Replies)
Discussion started by: bob122480
9 Replies
Login or Register to Ask a Question