find all numbers > x and replace with y within a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting find all numbers > x and replace with y within a file
# 1  
Old 09-06-2011
find all numbers > x and replace with y within a file

How would I do this? How could i use <> symbols for numbers in the find/replace code below?
Code:
perl -pi -e 's/test/tst/'

OR is there a better way?

100 5000 2 432 4 2 33 4 5 6 65 300 301

needs to be:

100 300 2 300 4 2 33 4 5 6 65 300 300

also it might not always need spaces... i need multiple types of delimiters please.
# 2  
Old 09-06-2011
Code:
awk -F' ' -v bound=300 'BEGIN { OFS = "," } 
{
  for(i=1; i<=NF; i++)
    if ($i > bound) $i = bound
  print
}' INPUTFILE
100,300,2,300,4,2,33,4,5,6,65,300,300

# 3  
Old 09-06-2011
That worked great. I am curious about other ways to do the same thing though ...

Also, how could i make a script so that i could do something like:
Code:
./numberchange myfile

# 4  
Old 09-07-2011
Code:
$ ruby -ane 'puts $F.map{|x| x=x.to_i>300?"300":x}.join(" ")' file

# 5  
Old 09-07-2011
Cool replies everyone. Perl solution anyone? Thanks.
# 6  
Old 09-07-2011
Code:
% perl -le'
  ($l, $s) = @ARGV;
  $s =~ s/(\d+)/$1 > $l ? $l : $1/eg;
  print $s
  ' 300 '100 5000 2 432 4 2 33 4 5 6 65 300 301'
100 300 2 300 4 2 33 4 5 6 65 300 300

# 7  
Old 09-07-2011
I would like someone to explain in detail the code yazu wrote. I want to learn too! I don't want to be script kiddie, I want to be code monkey

---------- Post updated at 11:14 AM ---------- Previous update was at 10:52 AM ----------

Last edited by herot; 09-07-2011 at 12:49 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Find duplicates in file with line numbers

Hello All, This is a noob question. I tried searching for the answer but the answer found did not help me . I have a file that can have duplicates. 100 200 300 400 100 150 the number 100 is duplicated twice. I want to find the duplicate along with the line number. expected... (4 Replies)
Discussion started by: vatigers
4 Replies

2. Shell Programming and Scripting

Use awk to replace numbers in a file with a column from another file

Hello, I am trying to make a awk code that will take 2 files, a txt file like this : 1 1 88 c(1:38, 42, 102) 2 2 128 c(39:41, 43:101, 103:105, 153, 155:189, 292, 344:369) 3 3 84 c(190:249, 603, 606:607, 609:629) 4 4 12 ... (8 Replies)
Discussion started by: nastaziales
8 Replies

3. UNIX for Dummies Questions & Answers

Sed/awk to find negative numbers and replace with 1?

Greetings. I have a three column file, and there are some numbers in the second column that are <1. However I need all numbers to be positive, thus need to replace all those numbers with just one. I feel like there must be a simple way to use awk to find these numbers and sed to replace but can't... (5 Replies)
Discussion started by: Twinklefingers
5 Replies

4. Shell Programming and Scripting

How to find numbers in text file?

Hi I have a text file with rows like this: 7 Herman ASI-40 Jungle (L) Blueprint (L) Weapon Herman ASI-40 Jungle (L) 215.00 57 65.21 114.41 and 9 Herman CAP-505 (L) Blueprint (L) Weapon Herman CAP-505 (L) 220.00 46.84 49.1 104.82 and 2 ClericDagger 1C blueprint Melee - Shortblade... (2 Replies)
Discussion started by: pesa
2 Replies

5. Shell Programming and Scripting

using sed to find and replace multiple numbers

I have looked around and there are several examples of how to use sed, but I don't think any of them help me very much with what I am trying to do. I have a text file like this.... 1! SRCNAM = 00001 ! 1! X = 50.0000, 0.0000,... (10 Replies)
Discussion started by: mercury.int
10 Replies

6. Shell Programming and Scripting

Replace 2nd column of CSV file with numbers on line

I have a csv file with occasional multiple entries in the second column. 111111,104,07-24-2011,3.15,N, 222222,020 140,07-24-2011,10.00,N,I want the result 111111,104,07-24-2011,3.15,N, 222222,020,07-24-2011,10.00,N, 222222,140,07-24-2011,10.00,N, I know I can get the output of the second... (5 Replies)
Discussion started by: ffdstanley
5 Replies

7. Shell Programming and Scripting

Replace several numbers with respective tag and make a single file

Dear All, I have a final output files as 736645|0| 13879|1| 495563|10| 127933|14| 4975|16| 49038|6| 53560|7| 135115|8| 178857|9| Now I want to replace second column with respective tag as per the value (4 Replies)
Discussion started by: jojo123
4 Replies

8. Shell Programming and Scripting

count numbers of matching rows and replace its value in another file

Hello all, can you help me in this problem, assume We have two txt file (file_1 and file_3) one is file_1 contains the data: a 0 b 1 c 3 a 7 b 4 c 5 b 8 d 6 . . . . and I need to count the lines with the matching data (a,b,..) and print in new file called file_2 such as the... (4 Replies)
Discussion started by: GoldenFalcon10
4 Replies

9. AIX

How to replace many numbers with one number in a file

How to replace many numbers with one number in a file. Many numbers like 444565,454678,443298,etc. i want to replace these with one number (300).Please halp me out. (2 Replies)
Discussion started by: vpandey
2 Replies

10. Shell Programming and Scripting

to replace one character by numbers in a file

suppose u have a file aas P-H 123 gdg O-U 223 hdy I-Y 12 fgd K-O 333 ssa L-P 32 output shud be like that aas P123H gdg O223U hdy I12Y fgd K333O ssa L32P thanks (7 Replies)
Discussion started by: cdfd123
7 Replies
Login or Register to Ask a Question