AWK Substr - find and replace question...


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting AWK Substr - find and replace question...
# 1  
Old 11-28-2011
AWK Substr - find and replace question...

Hello Experts,

I have a input file that I need to replace a value only if the file contains the number 6 in column 1. I would like to use AWK in a shell script (ksh on a AIX platform). I need all rows written out, but only change 2 fields when the first column contains a numer 6.


Input file: $Infile
New Output file: $outfile

Code snippet in shell:
Code:
######################################
# Variable Declaration Section (sjb) #
######################################
Mask_Rec_Type="6"
Mask_Mem_Name="ACCOUNT HOLDER "
Mask_Mem_Id="000000000000000"
 
awk '
{
if ( substr($File1,1,1) == $Mask_Rec_Type ) {
substr($File1,40,15) == $Mask_Mem_Id
substr($File1,55,25) == $Mask_Mem_Name
} else { 
print ($0) }} ' $File1 >$outfile1

Error that I am getting:
Code:
awk: Field is not correct.
The input line number is 1. The file is XXX_File_20111123.txt.
The source line number is 3.
 
Thanks for any assistence you can give...



-scottb
Moderator's Comments:
Mod Comment Please use code tags!

Last edited by scottb; 11-28-2011 at 03:43 PM.. Reason: add code tags (I think someone must have added them... thanks)
# 2  
Old 11-28-2011
try like this
Code:
Mask_Rec_Type="6"
Mask_Mem_Name="ACCOUNT HOLDER "
Mask_Mem_Id="000000000000000"

awk '{
if(substr($1,6,6)=='$Mask_Rec_Type'){
sub(substr($0,40,15),"'$Mask_Mem_Id'",$0);
sub(substr($0,55,25),"'"$Mask_Mem_Name"'",$0);
print}
else print}' $File1 >$outfile1

regards
ygemici
# 3  
Old 11-28-2011
Thank you so much Ygemici.... What you put for me worked perfectly after I just changed the length/start position of the if statement, "if(substr($1,1,1=='$Mask_Rec_Type'){.....

Thanks for you help in doing this ... this is the first time I tried using awk in a script so your solution is very fine and it works...

-scottb
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search comppare replace (substr/lppad)

Hi Everyone, I have a data file with data as below which contains millions of data and gets loaded to database using SQL loader using positional notation. AT 0001 000000000100000000000 BE 4 000000000000030000000 DE 0055 000004000000000000000 FR 0 ... (8 Replies)
Discussion started by: Showdown
8 Replies

2. Shell Programming and Scripting

Find and replace in awk

I have a file that I am trying to find a specific word, then replace text within that string. file TestA2015 TestB2016 Example. Replace TestB2016 to TestB0000, so if TestB is found replace the original "2016" to "0000". Thank you :). awk tried awk '{ sub(/TestB$/, "0000", $6) }1'... (5 Replies)
Discussion started by: cmccabe
5 Replies

3. Shell Programming and Scripting

Another sed/awk search=>replace question

Hello, Need a little bit of help. Basically I need to replace lines in a file which were calculated wrong as it would 12 hours to regenerate the data. I need to calculate values based on other files which I've managed to figure out with grep/cut but now am stuck on how to shove these new... (21 Replies)
Discussion started by: f77coder
21 Replies

4. Shell Programming and Scripting

Find fields and replace using awk

Code: Using ksh Var1=`awk -F";" {print $1}' Input2.txt` cat Input1.txt | awk -F";" '{$3="Var1"}' > Output.txt (13 Replies)
Discussion started by: Roozo
13 Replies

5. Shell Programming and Scripting

Find and Replace in awk

Friends, I have more the thousand lines like this. check.cloud1.port=342 check.cloud2.port=5456 check.cloud3.port-4564 But we need to transfer it to _CHECK.CLOUD1.PORT_=342 _CHECK.CLOUD2.PORT_=5456 _CHECK.CLOUD3.PORT_=4564 Any one could pls help of this. Thanks in Advance ... (1 Reply)
Discussion started by: jothi basu
1 Replies

6. Shell Programming and Scripting

sed and awk -Find and Replace

All, I have thousands of lines in a file with following format DATA=_ONE_XXX_YYY_CCC_HHHG_ DATA1=_GGG_JJJJ_HHH_UUU_JJJJ_HHHH_LLL_ DATA3=_MMM_GG_NN_QQQQ_FFF_III_ I want to replace _ with . by ignoring the first (=_) and last (_) So that out put should looks like... (4 Replies)
Discussion started by: baluchen
4 Replies

7. Shell Programming and Scripting

Simple find and replace with AWK

I am trying to write a find and replace script with AWK and I can't seem to get it to work. I need it to find this exact string *P*: and replace the P with a T or just replcare the whole thing with *T*:. this is what I have tried awk 'BEGIN {gsub(/\*P*:/,"\*T*:"); print}' ${INFILE} >... (4 Replies)
Discussion started by: wbshrk
4 Replies

8. Shell Programming and Scripting

awk help to do conditional find and replace

Hi, I have a Line input for awk as follows DROP MATERIALIZED VIEW MCR.COMM_STACK; CREATE MATERIALIZED VIEW "MCR"."COMM_STACK" ON PREBUILT TABLE WITHOUT REDUCED PRECISION USING INDEX REFRESH FAST ON DEMAND START WITH sysdate+0 NEXT SYSDATE + 7 WITH PRIMARY KEY USING DEFAULT... (3 Replies)
Discussion started by: rajan_san
3 Replies

9. Shell Programming and Scripting

awk find/replace

Greetings all. I have web site that has long option and switch lists. When I insert something new into these files, the lists need to be reordered. IE: 1 => apple 2 => pear 3 => bannana 4 => orange --------------------- Add grape as #2 1 => apple 2 => grape 3 => pear 4 =>... (2 Replies)
Discussion started by: RobertSubnet
2 Replies

10. Shell Programming and Scripting

small question regarding substr()

Hello.. I am doing some awk-ing and among all I use substr inside it.. I have: ....substr($0,60,37) meaning as U all know take from 37 char. from point 60.. can I put it like this substr($0,60,end of line) meaning take it from point 60 and take all characketrs in that line until line... (2 Replies)
Discussion started by: amon
2 Replies
Login or Register to Ask a Question