awk script to "clamp" numbers.


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers awk script to "clamp" numbers.
# 1  
Old 10-30-2019
awk script to "clamp" numbers.

Hello. I'm new to the command line and am self teaching how to use it. I have a .csv file that contains the following data:
Code:
5,10,15,30,8,3,9,10,11,3,12

I'm trying to write an awk script that will "clamp" a number that is > 10 to 10. (i.e. 30 will become 10 but 5 would stay as 5)
The output is to be as follows:
Code:
5
10
10
10
8
3
9
10
10
3
10

This is what I have so far but I don't know if I am even in the right ballpark. Any pointers?
Code:
BEGIN {
FS=","
}

{
for (i=0; i <= NF; i++)
  array[i] = $1;

max=10;
print "output";

for (i=1; i <= NF; i++){
        if (array[i] > max) {
                array[i] = max;
}
}
}

END {
print array[i]
}

# 2  
Old 10-30-2019
Does it come close to what you expect?
# 3  
Old 10-30-2019
Not at all. It just prints "Output" and then a single empty line. I was able to get it to print the first 5 but that was it
# 4  
Old 10-30-2019
Try
Code:
awk -F, '
        {for (i=1; i <= NF; i++) print $i<10?$i:10
        }
' file
5
10
10
10
8
3
9
10
10
3
10

This User Gave Thanks to RudiC For This Post:
# 5  
Old 10-30-2019
Thanks, that does work. I was trying to learn how to code the solution in an awk script with Begin {} {} End{} and not using any of the built-in awk functions.
# 6  
Old 10-30-2019
You didn't say so in your spec...

How about

Code:
awk '
BEGIN   {FS = ","
        }
        {for (i=1; i <= NF; i++)        {if ($i<10)     T = $i
                                           else         T = 10
                                         print T
                                        }
        }
' file

This User Gave Thanks to RudiC For This Post:
# 7  
Old 10-30-2019
Awesome. Thanks for all of your help. Quick question just for learning purposes. If I wanted to put the "print T" in the END {}, how would I do that. I put it in there and it just prints 10.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

2. Shell Programming and Scripting

Awk,sed : change every 2nd field ":" to "|"

Hi Experts, I have a string with colon delimited, want 2nd colon to be changed to a pipe. data: 101:8:43:4:72:14:41:69:85:3:137:4:3:0:4:0:9:3:0:3:12:3: I am trying with sed, but can change only 1 occurance: echo "101:8:43:4:72:14:41:69:85:3:137:4:3:0:4:0:9:3:0:3:12:3:" | sed 's/:/|/2'... (5 Replies)
Discussion started by: rveri
5 Replies

3. Post Here to Contact Site Administrators and Moderators

Suggestion: adding two new groups "sed" and "awk"

Majority of the questions are pertaining file/string parsing w.r.t sed or awk It would be nice to have these two as their own sub category under shell-programming-scripting which can avoid lot of duplicate posts. (1 Reply)
Discussion started by: jville
1 Replies

4. Shell Programming and Scripting

AWK "make a new column that include increasing numbers"

please help!!!!!! I have a file .txt that has only one column like that: 34.1 35.5 35.6 45.6 ... Now, i want to add a column in the left in which the values of this column increase by 0.4 , for example: 0.0 34.1 0.4 35.5 0.8 35.6 1.2 45.6 How can i do with awk instructions??? ... (2 Replies)
Discussion started by: tienete
2 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

Simplify Bash Script Using "sed" Or "awk"

Input file: 2 aux003.net3.com error12 6 awn0117.net1.com error13 84 aux008 error14 29 aux001.ha.ux.isd.com error12 209 aux002.vm.ux.isd.com error34 21 alx0027.vm.net2.com error12 227 dux001.net5.com error123 22 us008.dot.net2.com error121 13 us009.net2.com error129Expected Output: 2... (4 Replies)
Discussion started by: sQew
4 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. Shell Programming and Scripting

help for saving vertical datas to horizontal with "awk" or "cut"

hi, i have a file having datas like that ./a.txt 12344 12345 12346 12347 ..... ..... ... i want to save this datas to another file like that ./b.txt 12344 12345 12346 12347 ... ... ... i think awk can make this but how? :) waiting for ur help. (3 Replies)
Discussion started by: mercury
3 Replies

10. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question