Print count of unique values


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Print count of unique values
# 1  
Old 08-26-2016
Print count of unique values

Hello experts,

I am converting a number into its binary output as :

Code:
 read n
echo "obase=2;$n" | bc

I wish to count the maximum continuous occurrences of the digit 1.

Code:
 
 Example : 
  
 1. The binary equivalent of 5 = 101. Hence the output must be 1.
 2. The binary equivalent of 6 = 110. Hence the output must be 2.
 3. The binary equivalent of 9 = 1001. Hence the output must be 1.
 4. The binary equivalent of 13 = 1101. Hence the output must be 2

Could you please help.

Thanks,
Haider
# 2  
Old 08-26-2016
how about this ?
Code:
$ echo "111110000111000" | tr '0' '\n' | sort -nr | awk 'NR==1{print length}'
5

$ echo "111001100111000" | tr '0' '\n' | sort -nr | awk 'NR==1{print length}'
3

$ echo "1110011001111000" | tr '0' '\n' | sort -nr | awk 'NR==1{print length}'
4

# 3  
Old 08-26-2016
Hello H squared,

Could you please try following.
Code:
cat script.ksh
echo "Enter a number here.."
read num
echo "obase=2;$num" | bc | awk '{print $0;while(match($0,/1+/)){;q=q>substr($0,RSTART,RLENGTH)?q:substr($0,RSTART,RLENGTH);$0=substr($0,RLENGTH+1)}} END{print length(q)}'

So let's say we will run it as follows.
Code:
./script.ksh
Enter a number here..
12312446577991213
101011101111100001101011011100100110001101111000101101
5

./script.ksh
Enter a number here..
12111113312
1011010001111000001110110001100000
4

EDIT: Adding a non-one liner form of solution on same now.
Code:
echo "Enter a number here.."
read num
echo "obase=2;$num" | bc | awk '{print $0;
                                 while(match($0,/1+/)){
                                                        q=q>substr($0,RSTART,RLENGTH)?q:substr($0,RSTART,RLENGTH);
                                                        $0=substr($0,RLENGTH+1)
                                                      }
                                }
                                 END                  {
                                                        print length(q)
                                                      }
                               '

Thanks,
R. Singh

Last edited by RavinderSingh13; 08-26-2016 at 04:06 AM.. Reason: Added a non-one liner form of solution now.
This User Gave Thanks to RavinderSingh13 For This Post:
# 4  
Old 08-26-2016
In a bash script, you could split the record on zeros then count the length of each 'field' it creates, perhaps like this:-
Code:
#!/bin/bash

read -p "Enter a number here.. " num

one_strings="$(echo \"obase=2\;$num\" | bc | tr '0' ' ' )"

max_found_length=0
for a_string in $one_strings        # Unquoted to ensure it splits up for the read
do
   a_string_length="${#a_string}"
   if [ $a_string_length -gt $max_found_length ]
   then
      max_found_length=$a_string_length
   fi
done

echo "Max length of consecutive 1's found was $max_found_length"

Apart from the conversion to binary, this is all internal to the shell, so should be quick.

For ksh you will need to change the read:-
Code:
read  num?"Enter a number here.. "



I hope that this helps,
Robin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Issue using awk to print min values for unique ids

I am using the following script to search for and print minimum values for each individual Fields (3-14) for each unique id (Field 1). But when the field contains a "-99.99" ( I am ignoring "-99.99") and when the minimum value is the first line of a new id (Field 1), the output does not print Field... (13 Replies)
Discussion started by: ncwxpanther
13 Replies

2. Shell Programming and Scripting

Count number of unique values in each column of array

What is an efficient way of counting the number of unique values in a 400 column by 1000 row array and outputting the counts per column, assuming the unique values in the array are: A, B, C, D In other words the output should look like: Value COL1 COL2 COL3 A 50 51 52... (16 Replies)
Discussion started by: Geneanalyst
16 Replies

3. UNIX for Beginners Questions & Answers

Print lines based upon unique values in Nth field

For some reason I am having difficulty performing what should be a fairly easy task. I would like to print lines of a file that have a unique value in the first field. For example, I have a large data-set with the following excerpt: PS003,001 MZMWR/ L-DWD// * PS003,001... (4 Replies)
Discussion started by: jvoot
4 Replies

4. Shell Programming and Scripting

Count Unique values from multiple lists of files

Looking for a little help here. I have 1000's of text files within a multiple folders. YYYY/ /MM /1000's Files Eg. 2014/01/1000 files 2014/02/1237 files 2014/03/1400 files There are folders for each year and each month, and within each monthly folder there are... (4 Replies)
Discussion started by: whegra
4 Replies

5. Shell Programming and Scripting

Count frequency of unique values in specific column

Hi, I have tab-deliminated data similar to the following: dot is-big 2 dot is-round 3 dot is-gray 4 cat is-big 3 hot in-summer 5 I want to count the frequency of each individual "unique" value in the 1st column. Thus, the desired output would be as follows: dot 3 cat 1 hot 1 is... (5 Replies)
Discussion started by: owwow14
5 Replies

6. Shell Programming and Scripting

Looping through entire directory and count unique values

Hello, I`m a complete newbie to coding, please help with this problem. I have multiple files in a directory, I have to loop through the contents of each file and extract number of unique isoforms in that file. Each file is tab delimited and only the line with the first parent (column 3)... (1 Reply)
Discussion started by: ritakadm
1 Replies

7. Shell Programming and Scripting

Find and count unique date values in a file based on position

Hello, I need some sort of way to extract every date contained in a file, and count how many of those dates there are. Here are the specifics: The date format I'm looking for is mm/dd/yyyy I only need to look after line 45 in the file (that's where the data begins) The columns of... (2 Replies)
Discussion started by: ronan1219
2 Replies

8. Shell Programming and Scripting

List unique values and count instances in .csv file

I need to take the second column of a .csv file and count the number of instances of each unique value in that same second column. I'd like the output to be value,count sorted by most instances. Thanks for any guidance! Data example: 317476,317756,0 816063,318861,0 313123,319091,0... (4 Replies)
Discussion started by: batcho
4 Replies

9. Shell Programming and Scripting

How to count Unique Values from a file.

Hi I have the following info in a file - <Cell id="25D"/> <Cell id="26A"/> <Cell id="26B"/> <Cell id="26C"/> <Cell id="27A"/> <Cell id="27B"/> <Cell id="27C"/> <Cell id="28A"/> I would like to know how would you go about counting all... (4 Replies)
Discussion started by: Prega
4 Replies

10. Shell Programming and Scripting

print unique values of a column and sum up the corresponding values in next column

Hi All, I have a file which is having 3 columns as (string string integer) a b 1 x y 2 p k 5 y y 4 ..... ..... Question: I want get the unique value of column 2 in a sorted way(on column 2) and the sum of the 3rd column of the corresponding rows. e.g the above file should return the... (6 Replies)
Discussion started by: amigarus
6 Replies
Login or Register to Ask a Question