Replacing a character string in a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replacing a character string in a file
# 8  
Old 12-12-2005
hi chaps,
Where am I going wrong below is my code after your comments :-

nawk -F\| -v CTY=$ICO \
-v oldamt=$prvamt \
-v newamt=$payin \
-v size=$cursize \
-v newday=$TODAY
'BEGIN {OFS="|"}
if ($1 == CTY) {
if ($7 == oldamt) {
$7 == newamt
$2 == newday
$3 == size
}
}
{print} ' $PARFILE


But it sill does not change for file below when $1 = IRL. Any ideas what I'm doing wrong

IRL|08122005|50935|VTIEpay|xxxxx|5|2005331
EGR|01012003|3333|EEDEpay|xxxxxxx|7|900
BEL|21072004|720981|VTBEpay|xxxxxxxx|8|2000
EEA|22077994|200|EEATpay|xxxxxxx|9|500
# 9  
Old 12-12-2005
You have some minor syntax errors. Changes are in red:
Code:
nawk -F\| \
    -v CTY=$ICO \
    -v oldamt=$prvamt \
    -v newamt=$payin \
    -v size=$cursize \
    -v newday=$TODAY \ <== Missing line continuation
    'BEGIN {OFS="|"}
     $1 == CTY { <<= This marks the start of an autonomous procedure; "if ()" is given
            if ($7 == oldamt) {
                $7 = newamt <== "=" is assignment operator here; "==" is test operator
                $2 = newday
                $3 = size
        }                                                          
     }                                                    
{print} ' $PARFILE


Last edited by tmarikle; 12-12-2005 at 01:03 PM..
# 10  
Old 12-14-2005
Hi there,
I have changed my code to this :-
nawk -F\| \ -v CTY=$ICO \
-v oldamt=$prvamt \
-v newamt=$payin \
-v size=$cursize \
-v newday=$TODAY \
'BEGIN {OFS="|"}
$1 == CTY {
if ($7 == oldamt) {
$7 = newamt
$2 = newday
$3 = newsum
}
}
{print} ' $PARFILE

I now get the errors :-

nawk: can't open file source line number 1
/u01/TEST1/app/geneva/bin/autoAccpay.sh[610]: -v: not found


Soryy to be a pain chaps - what have I missed I have checked and PARFILE does exist where it should be
# 11  
Old 12-14-2005
This backslash is a problem:
Code:
nawk -F\| \ -v CTY=$ICO \
...

# 12  
Old 12-14-2005
Ok,
Got rid of the slash - now have two error messages left
/u01/TEST1/app/geneva/bin/autoAccpay.sh[610]: -v: not found
/u01/TEST1/app/geneva/bin/autoAccpay.sh[613]: -v: not found
this relates to these lines of code

nawk -F\| -v CTY=$ICO \
-v oldamt=$prvamt \ -v newamt=$payin \
-v size=$cursize \
-v newday=$TODAY \ 'BEGIN {OFS="|"}
$1 == CTY {
if ($7 == oldamt) {
$7 = newamt
$2 = newday
$3 = newsum
}
}
{print} ' $PARFILE

I'm pulling my hair out - is it an obvius problem because it is still not updating the $PARFILE.

Sorry for bing a pain
# 13  
Old 12-14-2005
Sorry, I only caught the first mistake. your other two lines are the same.
Code:
-v oldamt=$prvamt \ -v newamt=$payin \
-v size=$cursize \
-v newday=$TODAY \ 'BEGIN {OFS="|"}

There isn't any need for these slashes unless you are moving the text following to a new line.
Code:
-v oldamt=$prvamt \
-v newamt=$payin \
-v size=$cursize \
-v newday=$TODAY \
'BEGIN {OFS="|"}
...

They are really here in your script to make your command more readable (slashes are also used to "escape" special characters that will be misinterpreted as is the case with your -F parameter). One more point, don't put any spaces after the slash when it's used to continue a command on a new line as this will cause the shell to believe that you want to escape a space; the rest of your command will be ignored.

Note: The -F parameter uses a slash to change how the verticle bar is understood by the shell. Normally it's used as a pipe, now you are telling awk that it is a field separator.
# 14  
Old 04-11-2009
Great Knowledge Sharing

Reallly appreciate your good work. Keep it up.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replacing string values from a File

I want to replace string values from a file to a file For eg : File1 has 30 lines of string with values, those specific values needs to be changed in file2 and remaining values in file2 should be as it is. For example: From file (File1) cluster.name=secondaryCluster To replace File... (9 Replies)
Discussion started by: sriram003
9 Replies

2. Programming

Need help for replacing a string in a text file at runtime !

Hi All, I am facing an issue... I need to replace some string in a text file while the same file is read by some other user at the same time. The other user is using it in the Read only mode. So I can't create a temporary file and write the content first and then write it back into the original... (2 Replies)
Discussion started by: agupta2
2 Replies

3. UNIX for Dummies Questions & Answers

replacing a string with another string in a txt file

Dear all, I have a file like below. I want to replace all the '.' in the 3rd column with 'NA'. I don't know how to do that. Anyone has an iead? Thanks a lot! 8 70003200 21.6206 9 70005700 17.5064 10 70002200 . 11 70005100 19.1001 17 70008000 16.1970 32 70012400 26.3465 33... (9 Replies)
Discussion started by: forevertl
9 Replies

4. Shell Programming and Scripting

Renaming a file and replacing the special character in the name with date

HI all, How can i rename some files and replace the special character in the name with todays date ex: Name#file1.txt Name#file2.txt to be renamed as Name.20091119.file1.txt Name.20091119.file2.txt (11 Replies)
Discussion started by: abhinav192
11 Replies

5. Shell Programming and Scripting

Replacing Character in a file based on element

Hi, I have file like below. Unix:/pclls/turc>cat tibc.property executeReceiver=Y executeSender=Y I want to replace executeSender=N in the file. My file should be like below. executeReceiver=Y executeSender=N I tried with the below command, its giving error. cat tibc.property |... (2 Replies)
Discussion started by: senthil_is
2 Replies

6. Shell Programming and Scripting

Replacing the last character for each line in a file

Hello, I have a csv file and will like to replace the last character of each line in the file with Z (20 Replies)
Discussion started by: 123script
20 Replies

7. Shell Programming and Scripting

error while replacing a string by new line character in sed

hi, when i am doing the following things getting error Can anyone please suggest i have a file where there is a line like the following branch=dev sdf dev jin kilii fin kale boyle dev james dev i want to search the existance of dev in the above line. cat "$file" | sed -n... (8 Replies)
Discussion started by: millan
8 Replies

8. Shell Programming and Scripting

replacing string in an XML file

Hi all, I need to replace string in XML file..XML file like <dependency> <groupId>fr.orange.portail.ear</groupId> <artifactId>_AdminServicesEAR</artifactId> <version>1.0.0-20080521.085352-1</version> <type>ear</type> </dependency> <dependency> ... (2 Replies)
Discussion started by: subin_bala
2 Replies

9. Shell Programming and Scripting

replacing string with special character ???

the problem is while replacing the old string with new one with the help of SED i am unable to replace the special characters with new strings. how can i do that? i dont want the user to be given the trouble to write '\' before every special characters like * , . , \ , $ , &. sed... (4 Replies)
Discussion started by: imppayel
4 Replies
Login or Register to Ask a Question