Can BASH handle mathematical operations and do a Search & Replace?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Can BASH handle mathematical operations and do a Search & Replace?
# 8  
Old 01-23-2011
Code:
BEGIN {
  dirN=split("right left", dirA, FS)
}
/margin-/ {
    for(i=1;i<=dirN;i++)
      if (match($0,"margin-" dirA[i] ":[^;][^;]*")) {
        str=substr($0,RSTART,RLENGTH)
        gsub("[^0-9]","",str)
        str-=(str/4)
        $0=substr($0,1,RSTART-1) "margin-" dirA[i] ":" str "px;" substr($0,RSTART+RLENGTH+1)
     }
}
1


Last edited by vgersh99; 01-23-2011 at 09:03 AM..
# 9  
Old 01-23-2011
vgersh99, I've tested your code and found that it converts all "margin-right" px. And if a "margin-left" is present, it converts the "margin-left," but removes "margin-right."

Here is a sample file:
Code:
<xControl xId="" xType="Label" xRow="1" xColumn="1"  xCssStyle="margin-right:3px;">
<xControl xId="" xType="Label" xRow="1" xColumn="3"  xCssStyle="margin-left:20px;margin-right:3px;">
<xControl xId="" xType="Label" xRow="1" xColumn="3"  xCssStyle="margin-left:20px;margin-right:3px;">
<xControl xId="" xType="Label" xRow="1" xColumn="5"  xCssStyle="margin-left:20px;margin-right:3px;">
<xControl xId="" xType="Label" xRow="1" xColumn="5"  xCssStyle="margin-left:20px;margin-right:3px;">
<xControl xId="unitLoss" xType="ComboView" xRow="1" xColumn="1" xCssStyle="margin-right:20px;">

After running the updated code, I get the following:
Code:
<xControl xId="" xType="Label" xRow="1" xColumn="1"  xCssStyle="margin-right:2.25px;
<xControl xId="" xType="Label" xRow="1" xColumn="3"  xCssStyle="margin-left:15px;
<xControl xId="" xType="Label" xRow="1" xColumn="3"  xCssStyle="margin-left:15px;
<xControl xId="" xType="Label" xRow="1" xColumn="5"  xCssStyle="margin-left:15px;
<xControl xId="" xType="Label" xRow="1" xColumn="5"  xCssStyle="margin-left:15px;
<xControl xId="unitLoss" xType="ComboView" xRow="1" xColumn="1" xCssStyle="margin-right:15px;

# 10  
Old 01-23-2011
Given your latest sample input, I get:
Code:
<xControl xId="" xType="Label" xRow="1" xColumn="1"  xCssStyle="margin-right:2.25px;">
<xControl xId="" xType="Label" xRow="1" xColumn="3"  xCssStyle="margin-left:15px;margin-right:2.25px;">
<xControl xId="" xType="Label" xRow="1" xColumn="3"  xCssStyle="margin-left:15px;margin-right:2.25px;">
<xControl xId="" xType="Label" xRow="1" xColumn="5"  xCssStyle="margin-left:15px;margin-right:2.25px;">
<xControl xId="" xType="Label" xRow="1" xColumn="5"  xCssStyle="margin-left:15px;margin-right:2.25px;">
<xControl xId="unitLoss" xType="ComboView" xRow="1" xColumn="1" xCssStyle="margin-right:15px;">

# 11  
Old 01-23-2011
maybe I am missing something?
nawk -f jl2.awk myFile.xml

jl2.awk
Code:
#!/bin/bash

BEGIN {
  dirN=split("right left", dirA, FS)
}
/margin-/ {
    for(i=1;i<=dirN;i++)
      if (match($0,"margin-" dirA[i] ":[^;][^;]*")) {
        str=substr($0,RSTART,RLENGTH)
        gsub("[^0-9]","",str)
        str-=(str/4)
        $0=substr($0,1,RSTART-1) "margin-" dirA[i] ":" str "px;"
substr($0,RSTART+RLENGTH+1)
     }
}
1

myFile.xml:
Code:
<xControl xId="" xType="Label" xRow="1" xColumn="1"  xCssStyle="margin-right:3px;">
<xControl xId="" xType="Label" xRow="1" xColumn="3"  xCssStyle="margin-left:20px;margin-right:3px;">
<xControl xId="" xType="Label" xRow="1" xColumn="3"  xCssStyle="margin-left:20px;margin-right:3px;">
<xControl xId="" xType="Label" xRow="1" xColumn="5"  xCssStyle="margin-left:20px;margin-right:3px;">
<xControl xId="" xType="Label" xRow="1" xColumn="5"  xCssStyle="margin-left:20px;margin-right:3px;">
<xControl xId="unitLoss" xType="ComboView" xRow="1" xColumn="1" xCssStyle="margin-right:20px;">

output:
Code:
<xControl xId="" xType="Label" xRow="1" xColumn="1"  xCssStyle="margin-right:2.25px;
<xControl xId="" xType="Label" xRow="1" xColumn="3"  xCssStyle="margin-left:15px;
<xControl xId="" xType="Label" xRow="1" xColumn="3"  xCssStyle="margin-left:15px;
<xControl xId="" xType="Label" xRow="1" xColumn="5"  xCssStyle="margin-left:15px;
<xControl xId="" xType="Label" xRow="1" xColumn="5"  xCssStyle="margin-left:15px;
<xControl xId="unitLoss" xType="ComboView" xRow="1" xColumn="1" xCssStyle="margin-right:15px;

# 12  
Old 01-23-2011
you have a wrapped line AND you don't need '#!/bin/bash':
Code:
BEGIN {
  dirN=split("right left", dirA, FS)
}
/margin-/ {
    for(i=1;i<=dirN;i++)
      if (match($0,"margin-" dirA[i] ":[^;][^;]*")) {
        str=substr($0,RSTART,RLENGTH)
        gsub("[^0-9]","",str)
        str-=(str/4)
        $0=substr($0,1,RSTART-1) "margin-" dirA[i] ":" str "px;" substr($0,RSTART+RLENGTH+1)
     }
}
1

This User Gave Thanks to vgersh99 For This Post:
# 13  
Old 01-23-2011
Quote:
Originally Posted by vgersh99
you have a wrapped line AND you don't need '#!/bin/bash':
Code:
BEGIN {
  dirN=split("right left", dirA, FS)
}
/margin-/ {
    for(i=1;i<=dirN;i++)
      if (match($0,"margin-" dirA[i] ":[^;][^;]*")) {
        str=substr($0,RSTART,RLENGTH)
        gsub("[^0-9]","",str)
        str-=(str/4)
        $0=substr($0,1,RSTART-1) "margin-" dirA[i] ":" str "px;" substr($0,RSTART+RLENGTH+1)
     }
}
1

i'm a dummy. you're my hero!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search & Replace

Hi Gurus, I have two files. I want to read sessoin_name from the file1 and replace $Param4 & $Param5 in file2 with connection_name in specified in file1. The file1 will have data in following format File 1 session_name,connection_name s_abcd,Listener_2 s_def,Listener_1 source file... (7 Replies)
Discussion started by: r_t_1601
7 Replies

2. Shell Programming and Scripting

Mathematical Operations on Column

Hi All, I want to perform a mathematical operation on column. Can anyone please help? Here is the sample of operation to be performed: 123 996 100 123 996 200 123 996 200 2015-09-21 123 996 100 123 996 200 123 996 100 What I want is to multiple all values of column # 3 by 100 and... (3 Replies)
Discussion started by: Zaib
3 Replies

3. Shell Programming and Scripting

Search & Replace

Hi all Please can you help me with a script to check several files for the following string: encoding=""and replace it with: encoding="UTF-8"I did the following, : #!/bin/sh string1="encoding=""" string2="encoding="UTF-8" sed 's/'"$string1"'/'"$string2"'/g'but does not work. Please can... (18 Replies)
Discussion started by: fretagi
18 Replies

4. Shell Programming and Scripting

search & replace pattern

Hi, My problem is that I have to search a changing pattern and replace it with the wild card char "*" i/p: 99_*_YYYYMMDD_SRC.txt.tar.gz o/p: 99_*_*_SRC.txt.tar.gz The problem is that YYYYMMDD pattern is not static. It could be YYYYMMDDHHMI or could be YYYYMMDDHHMISS. Can... (10 Replies)
Discussion started by: dips_ag
10 Replies

5. UNIX for Dummies Questions & Answers

Search & Replace

Hi , I ahve a text file which has several instances of the text such as run_time: 09:30 I need to add double quotes before and after the time value i.e: run_time: "09:30" Any suggestions on how to go about the same (4 Replies)
Discussion started by: jobbyjoseph
4 Replies

6. Shell Programming and Scripting

Need help with search & replace

I have a file that has some accent characters in it when viewed in some text editors, but when viewed in vi they come in as ~R and ~U. I need to make a script to remove these characters from the file, but have been unsuccessful. I am not sure how sed or awk, or something similar is viewing them,... (8 Replies)
Discussion started by: tcovert
8 Replies

7. UNIX for Dummies Questions & Answers

String Search & Replace

Hey, I want to have a C program which, for an existing file supplied by the command line argument (E.g. File1.txt) replaces all the occurrences of the words: "We” or “we” by “I” “a” by “the” “A” by “The”. Then print the replaced file. All other characters of the file are to be left... (1 Reply)
Discussion started by: IwishIknewC
1 Replies

8. Shell Programming and Scripting

search & replace in variable

Can I use search & replace in any variable? Suppose I have one variable named var1 which holds value "abcabc" I need to search 'a' in var1 and want to replace with 'x' like 'xbcxbc'. Is it possible? Can you provide me an example? Malay (3 Replies)
Discussion started by: malaymaru
3 Replies

9. Shell Programming and Scripting

Search & replace

Is there any way we can achieve search & replace with awk? I could achieve the same with sed in following way - sed 's/A/B/g' file1 > file2 But the same regex if I try with using awk following way, awk 's/A/B/g' file1 > file2 it gives me Syntax error. I strongly believe I am... (1 Reply)
Discussion started by: videsh77
1 Replies

10. Shell Programming and Scripting

Help, sed search&replace

Plzzzz, tell me some script about this... What does this mean ? sed '/^ */s///' sed '/^/s// /' and why it's diferent ??? sed '/ */s// /g' and sed 's/ */ /g'. It's all the same ??? Thanks you very much (2 Replies)
Discussion started by: mle
2 Replies
Login or Register to Ask a Question