## Problem adding into an array field!!!

# 1
Problem adding into an array field!!!

Hi,

Kindly assist by analyzing the code below and suggest changes to achieve the required output.

The input file:
01-010241800000 35000 MV010 02/03/09 0306 03060226 03
02-004103300000 470000 MV010 02/03/09 0301 03010276 03

The objective is to convert field No4. from dd/mm/yy to yyyymmdd

So then I pass it on to:

awk 'BEGIN {OFS=" " }

{ split(\$4,arr,"/");
\$4=sprintf("%d%s%s",arr[2]+2000,arr[1],arr[0])
print \$0} '

The output comes as:
01-010241800000 35000 MV010 200302 0306 03060226 03
02-004103300000 470000 MV010 200302 0301 03010276 03

I'm not too sure if the addition "arr[2] + 2000" is taking place. If so, sprintf, truncates the 2009 and instead returns a value of 20 for arr[2]. I guess arr[2] should be of length 4 as opposed to it's original length of 2. Would someone kindly help decipher why I am losing the "09" on arr[2]?

Much Regards

Pawee.
 talk2pawee View Public Profile for talk2pawee Find all posts by talk2pawee
# 2
try this...
 rakeshawasthi View Public Profile for rakeshawasthi Find all posts by rakeshawasthi
# 3
Thanks,Looks so simple, just changing the arrays to begin from 0 to 1....mmmmh!

Appreciated!
 talk2pawee View Public Profile for talk2pawee Find all posts by talk2pawee
# 4
Thanks..

Can you please explain the command..

\$4=sprintf("%d%s%s",arr[3]+2000,arr[2],arr[1])

 Siddheshk View Public Profile for Siddheshk Find all posts by Siddheshk
# 5
Can you please explain the command..

\$4=sprintf("%d%s%s",arr[3]+2000,arr[2],arr[1])

sprintf is a function to print formatted output. The % values in quotes represent the field arguments that follows & separated by commas-",". The %values indicate the field types i.e %d-decimal, %s-string. The fields have already been split into arrays and thus the new field \$4 is given the new format and the acquired types. Hence from 02/03/09 (arr[1]/arr[2]/arr[3])which is our field 4 in the input is rearranged into arrays and formatted to print them in the required order. Our arr[3] should acquire the prefix 20, so we add 2000 to the value 09, and that's why it is a decimal value-for operation "+" purposes.
Regards,

Pawee
 talk2pawee View Public Profile for talk2pawee Find all posts by talk2pawee
# 6
Thanks..

Highly Appreciated.
 Siddheshk View Public Profile for Siddheshk Find all posts by Siddheshk

## Adding to an array in an external file, and adding elements to it.

I have an array in an external file, "array.txt", which contains: char *testarray={"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};I want to be able to add an element to this array, and have that element display, whenever I call it, without having to recompile...

## 2. Shell Programming and Scripting

Hi I have file as given below 040|14300|40.0|563000 042|13200000|40.0 041|100|40.0 043|10000|40.0 045|102|40.0 I want to check if field 4 is null then I have to place | in position 4. result set should be 040|14300|40.0|563000 042|13200000|40.0| 041|100|40.0| 043|10000|40.0|...

## 3. Shell Programming and Scripting

I have a flat file test.log red,5,,,,, green,7,,,,, blue,4,,,,, red,8,,,,, green,9,,,,, How i get a a result: blue,4,,,,, green,16,,,,, red,13,,,,, Thanks Video tutorial on how to use code tags in The UNIX and Linux Forums.

## Adding total of first field for each number in the second field

Dears, I need a script or command which can find the unique number from the second filed and against that number it adds the total of first field . 17215630 , 0 907043 ,1 201050 ,10 394149 ,4 1964 ,9 17215630, 0 907043 ,1 201050, 10 394149 ,4 1964 ,9 1234234, 55 23 ,100 33 ,67 ...

## 5. Shell Programming and Scripting

Hello, I have a main file with IP addresses like this: Erisim var,100,172.17.241.5,4006,60,IS0799,TCP/IP Erisim var,1003,172.17.140.4,4004,60,IS2156,TCP/IP Erisim var,1004,172.17.140.5,4002,60,IS2636,TCP/IP Erisim var,1005,172.17.140.5,4004,60,IS2436,TCP/IP Erisim...

## adding field values if field matches

hi i have file as below , i want to add duplicate records like bell_bb to one record with valuve as 15 ( addition of both ) any oneline awk script to achive this ? header 0 CAMPAIGN_NAME 1 Bell_BB 14 Bell_MONTHLY 803 SOLO_UNBEATABLE 644 Bell_BB 1 Bell_MONTHLY 25 SOLO_UNBEATABLE...

## perl, put one array into many array when field is equal to sth

Hi Everyone, #!/usr/bin/perl use strict; use warnings; my @test=("a;b;qqq;c;d","a;b;ggg;c;d","a;b;qqq;c;d"); would like to split the @test array into two array: @test1=(("a;b;qqq;c;d","a;b;qqq;c;d"); and @test2=("a;b;ggg;c;d"); means search for 3rd filed. Thanks find the...

## adding another field to SED output

Dear experts, I have a file called "check" with contents like below i used the sed command like below to get the value of "success" and "failed" only My question is how can i get the value to include the time "03:15", so that i can get a value such as below : - Appreciate...

## Adding a new field using sed or awk?

I have a bcp file that contains 10 fields. These fields are separated by a tab. How can I add my name as a new field in the 8th position for every record? I've been playing w/ sed and awk but can't seem to figure this out.

## Adding field of flatfile by an index.

Hey guys, I was given a task that involved parcing a large file that looked somthing like this... A1-0999999,SMITH,.25 A1-0999999,JOHN,.75 A1-0999999,HELMET,.1.25 A1-0999999,HOOP,.10.25 D1-1212121,SMITH,4.00 D1-1212121,TH,9.00 D1-1212121,MITCH,10.20 D1-1212121,RETAL,3.00 A1-9909555,,3.00...