## A better way to compare text length percentage?

A better way to compare text length percentage?
# 1
04-23-2020
A better way to compare text length percentage?

I have a solution, but it seems labored. I would like to compare strings return a value in percent out of 100.

Such as:

i.e., 'abc' is 300% longer than 'a'

For beginners: s1=\${#text1} will return the length of \$text1. In this case it would return '1' because it is one character long ('a').

I've looked at the man pages for 'diff' and some others and haven't figured out an easy way that this could be done in a more simple manner; yet, something tells me I'm missing something. I'm repeating the formulas, and I'm wondering if there is perhaps some way to do an inverse of a result... Anyways, it seems redundant.

Ideas?
 bedtime View Public Profile for bedtime Find all posts by bedtime
# 2
04-23-2020
Try:
Hope this helps
 sea View Public Profile for sea Find all posts by sea
# 3
04-23-2020
Quote:
Originally Posted by sea
Try:
Hope this helps
Thank you. This is cool in that it seems to solve the 'division by zero' issue.

Yet this works in only one way.

For example:
but
I need both answers to say 200[%]. The text should be able to be swapped and still say the same value. The order does not matter to me, just how much bigger the bigger value is.

There must be some type of inverse equation or function/app that could be used.
 bedtime View Public Profile for bedtime Find all posts by bedtime
# 4
04-23-2020
Why?
In your 2nd example, the 2nd value is 50% of the first value. (\${#text1} > \${#text2})
That is 100% accurate.

If you want to get only the bigger value, you need to switch the echo'd values, or you change the order within the awk statement.
Or you make a check for which command to take.

hth

EDIT:
Like:
This User Gave Thanks to sea For This Post:
 sea View Public Profile for sea Find all posts by sea
# 5
04-23-2020
Try also
These 2 Users Gave Thanks to RudiC For This Post:
 RudiC View Public Profile for RudiC Find all posts by RudiC
# 6
04-23-2020
a bit simpler - the order doesn't matter:
This User Gave Thanks to vgersh99 For This Post:
 vgersh99 View Public Profile for vgersh99 Find all posts by vgersh99
# 7
04-23-2020
Thank you all for you solutions. I ended up going with vegersh99's solution as it was the most brief. I liked RudiC's mathmatics with the inverse equation.

Since I cannot have 'division by zero' errors, I added the 'if' statement near the end. Found out that shell doesn't like to compare numbers with decimals so added the int() function as well:

Would really like to figure out how to get this to do the equation so as not to have the 'division by zero' error when one or two variables have an empty string. I've tried a bunch of things such as adding '1' to each variable and trying to make it up elsewhere, but each time the values are incorrect.

Anyways, for now, it's more concise, and it's being used in the code.

Thanks everyone!
 bedtime View Public Profile for bedtime Find all posts by bedtime

Test Your Knowledge in Computers #813
Difficulty: Medium
The CSS RGBA alpha parameter defines the opacity as a number between 1.0 (fully transparent) and 0.0 (fully opaque).
True or False?

## Extracting fixed length number from a text file

Hi, I have a text file with sample records as CASE ID: 20170218881083 Original presentment record for ARN not found for Re-presentment I want to extract the 23 digit number from this file. I thought of using grep but initially couldn't extract the required number. However, after...

## Compare string length to a number

Hi, I want to compare strings length to a number but i am getting error. I want first name should be length of 8. Please help. #bin !/bin/bash clear echo -n "Enter name " read name IFS=_ ary=(\$name) for key in "\${!ary}"; do echo "\$key\${ary}"; done ##First name should be equal to 8...

## awk to output the percentage of a field compared to length

The awk below using the sample input would output the following: Basically, it averages the text in \$5 that matches if \$7 < 30 . awk '{if(len==0){last=\$5;total=\$7;len=1;getline}if(\$5!=last){printf("%s\t%f\n", last,...

## print variable length text from the middle of a line?

I am trying to get text from a webpage, in terminal form. So far I am: 1. getting the html for the page printed using curl (curl -s webpage.com), which is then 2. piped to awk, printing line number 29 (awk NR==29), then 3. this is where I am sort of lost. I know where in the printed line I...

## Aligning text files by max field length

Hello, Is there anyway that I can align a pipe delimited text file by the maxium field length where the field is separated out by pipes for large text files with more than 100,000 rows? So, far I have searched other forums and google about aligning text files in unix and I have noticed that...

## changing a variable length text to a fixed length

Hi, Can anyone help with a effective solution ? I need to change a variable length text field (between 1 - 18 characters) to a fixed length text of 18 characters with the unused portion, at the end, filled with spaces. The text field is actually field 10 of a .csv file however I could cut...

## compare 2 very large lists of different length

I have two very large datasets (>100MB) in a simple vertical list format. They are of different size and with different order and formatting (e.g. whitespace and some other minor cruft that would thwart easy regex). Let's call them set1 and set2. I want to check set2 to see if it contains...

## Need awk script to compare 2 fields in fixed length file.

Need a script that manipulates a fixed length file that will compare 2 fields in that file and if they are equal write that line to a new file. i.e. If fields 87-93 = fields 119-125, then write the entire line to a new file. Do this for every line in the file. After we get only the fields...

## How to Compare two files depend on line length Chars

I need to compare two files with exactly same length as example: - File1 contain 500 records with length of 640 chars of each line. File2 contain 1500 records with length of 640 chars of each line. I need get an output to be written in File3 which will contain 1000 records difference. but...

## how can i compare te length of the string

how can i campare te length of the string \$var = unix if ( \$var -eq 4 ) then.. is it right