Making changes in the fields of a record


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Making changes in the fields of a record
# 1  
Old 07-24-2008
Making changes in the fields of a record

Smilie
Hi Friends,

In the record below i have to make changes in the fields by putting the values stored in the temporary variables, x, y, z, p, q, r:

Code:
2)	In the TBT record store the values in the various fields as: 
             a)	X in a field position       51 to 56
             b)	Y in a field position       57 to 68
             c)	Z in a field position       69 to 74
             d)	P in a field position        75 to 86
             e)	Q in a field position       87 to 92
             f)          R in a field postion        93 to 104



Code:
TBT0000271422981977           50100001      08071400001100000015011500000100000000772700001200000014238H


Please sujjest me how to make changes through awk if it is possible ...


Thanks
Kanu
# 2  
Old 07-24-2008
If your variables have the exact width:

Code:
awk '{print substr($0,1,50)' $x $y $z $p $q $r '}'

Otherwise:

Code:
awk '{printf("%s%6s%12s%6s%12s%6s%12s\n") substr($0,1,50)' $x $y $z $p $q $r '}'

# 3  
Old 07-25-2008
CPU & Memory want to change the value

Thanks Frank, for giving me info about substr().
But what I want here is to copy the value into the specified field, while your command is printing it on screen.

what about:
Code:
awk '{if ( substr($0,12,6)' == "TAB" ####copy 4563 in the above given position######' }' filename

how the command between #### will work?

waiting for your valuable comments

Kanu
# 4  
Old 07-25-2008
CPU & Memory a better view of the problem

I want to change the record:

Code:
TAB000025  123338372221004       06000007727RUP       000000080714    862256382      0110HAL OFFICE SkpajiONSHOUSTON           TXPCO123456        80021           000000589001055000000030815482

to

Code:
TAB000025  567392372221004       06000007727RUP       000000080714    862256382      0110HAL OFFICE SkpajiONSHOUSTON           TXPCO123456        80021           000000589001055000000030815482

Any Solutions friends?
Thanks in Advance
# 5  
Old 07-25-2008
Just like the first awk solution you can use the substr function, something like this:
Code:
value="567392"

awk '/^TAB/{print substr($0,1,11} '$var' substr($0,18);next}1' file > newfile

There must be spaces around the variable '$var', beware of that.

Regards
# 6  
Old 07-25-2008
This should work:
Code:
awk -v v=567392 '/^TAB/{gsub(substr($0,12,6),v,$0)}1' file > new_file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Strip the first record off a file and isolate fields off of it

I have a 2 part question on how to this in unix scripting using kshell or c shell. I have a file described below: 1st record has 2 fields on it every other record has 22 fields on it. Example ABC, email address Detail 1 Detail 2 Detail 3 . . . 1st question is... (4 Replies)
Discussion started by: jclanc8
4 Replies

2. Shell Programming and Scripting

awk - compare 1st 15 fields of record with 20 fields

I'm trying to compare 2 files for differences in a selct number of fields. When differnces are found it will write the whole record of the second file including appending '|C' out to a delta file. Each record will have 20 fields, but only want to do comparison of 1st 15 fields. The 1st field of... (7 Replies)
Discussion started by: sljnk
7 Replies

3. Shell Programming and Scripting

Delete last 2 fields from every record in a file

Sample file record : "20130617003","2013-06-18T07:00:03","OUTWARD","01001011","TEST PLC","","HFX834346364364","20130617","10","DUM87534758","","1.28","826","020201","65879278","","","","","","010101","56789","DUMMY... (3 Replies)
Discussion started by: bigbuk
3 Replies

4. Shell Programming and Scripting

Newline between unequal record fields

Assume the following 5 records (field separator is a space): 0903 0903 0910 0910 0910 0910 0910 0910 0917 0917 0917 0917 0924 1001 1001 1001 1001 1008 1008 1008 1008 1015 1015 1015 1015 1022 1029 1029 1029 1029 1105 1105 1105 1105 1112 1112 1112 1112 1119 1126 1126 1126 1126 1203 1203 1203 1203... (8 Replies)
Discussion started by: tree
8 Replies

5. Shell Programming and Scripting

Compare fields and keep record with bigger ID?

How do you write a shell script to compare records with the same fields then keep the biggeer id number fields (field separate by a pipe) 1150| San Jose|8|15|7|2013-02-19 00:00:00.000|2013-02-20 00:00:00.000 1263|San Jose|8|15|7|2013-02-19 00:00:00.000|2013-02-20 00:00:00.000... (4 Replies)
Discussion started by: sabercats
4 Replies

6. Shell Programming and Scripting

Print all the fields of record using awk

Hi, i want to generate print statement using awk. i have 20+ and 30+ fields in each line Now its priting only first eight fields print statement as output not all. my record is as shown below filename ... (2 Replies)
Discussion started by: raghavendra.nsn
2 Replies

7. Shell Programming and Scripting

How count number of fields in a record

Dear All , I have the query cat temp.txt |28-07-1997|IF_LEG_DCCT|TOV JV sdfsdfdsfdsfdsCLOSED* KIEV|381015280 I need to count the number of fields in this pipe-seperated file. I beleive this is possible via AWK command. The in above file, output of the count should be 5.... Can some-one... (5 Replies)
Discussion started by: sureshg_sampat
5 Replies

8. Shell Programming and Scripting

Manipulating fields record wise

Hi all, I have an input file with no delimiter. Let us say the file is abc.txt having values for fields namely, EmpNumEnameDesigSalDept. Ofcourse the file has got several records. Every field has got a fixed start and end position. I need to assign the fields to corresponding varibles say... (1 Reply)
Discussion started by: rinku11
1 Replies

9. Shell Programming and Scripting

awk: record has too many fields

Hi, I'm trying this command - but get this error. Do you guys have any workaround for this? cat tf|sed 's/{//g'|sed 's/,//g'|awk '{for (i=1;i<=NF;i++) {if ($i == "OPTIME") {k = i + 2; print $i,$k}}}' awk: record `2005 Jul 28 17:35:29...' has too many fields record number 15 This is how... (3 Replies)
Discussion started by: chaandana
3 Replies

10. Shell Programming and Scripting

How to screen each variable record for right # of fields

Hi, In a script I have to check that input text files with a variable number of tab delimited fields have at least n fields and no more than m fields. Records are delimited by <CR> and <LF>. I have figured out code that will strip out all the alpha-numeric characters, convert the tabs to... (3 Replies)
Discussion started by: jvander
3 Replies
Login or Register to Ask a Question