hemanth gundabattula
hemanth gundabattula

Reputation: 13

Unix Shell scripting in AIX(Sed command)

I have a text file which consists of jobname,business name and time in min seperated with '-'(SfdcDataGovSeq-IntegraterJob-43).There are many jobs in this text file. I want to search with the jobname and change the time from 43 to 0 only for that particular row and update the same text file. Kindly advise what needs to be done.

Query that i am using : (cat test.txt | grep "SfdcDataGovSeq" | sed -e 's/43/0/' > test.txt) but the whole file is getting replaced with only one line.

Upvotes: 0

Views: 504

Answers (2)

P....
P....

Reputation: 18381

sed -e '/SfdcDataGovSeq/ s/43/0/' test.txt

This will only replace if the search is positive.

Agreed with Ed, Here is a workaround to put word boundaries Although Equality with awk is robust.

sed -e '/SfdcDataGovSeq/ s/\<43\>/0/g' test.txt

Upvotes: 0

Ed Morton
Ed Morton

Reputation: 203684

You should be using awk instead of sed:

awk 'BEGIN{FS=OFS="-"} $1=="SfdcDataGovSeq" && $3==43{$3=0} 1' file

Since it does full string or numeric (not regexp) matches on specific fields, the above is far more robust than the currently accepted sed answer which would wreak havoc on your input file given various possible input values.

Upvotes: 0

Related Questions