Visit Our UNIX and Linux User Community


Task


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Task
# 15  
Old 06-07-2011
Code:
[root@linux ~]# ./a.pl c
H:   EURS891             10440000000000.003000000450    FR0000130007   2ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURB891             10440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURS892             00440000000000.003000000450    FR0000130007   2ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURB892             00440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURB893             00440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURS893             00440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURS1892  S892      10440000000000.003000000450    FR0000130007   2ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURB1892  B892      10440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURB1893  B893      10440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURS1893  S893      10440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURS894             10440000000000.003000000450    FR0000130007   2ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURB894             10440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #

This is the output for your sample data. I found one small bug in the code. Updated version is:
Code:
#!/usr/bin/perl
open I, "$ARGV[0]";
@x=<I>;
$i=0;
for (@x){
  s/ +$//;
  $t=$_;
  @s=split / +/;
  if ($#s==10){
    $i=1;
    s/([^ ]+ +EUR[SB])1(\d+ +)[^ ]+( +)1/$1$2     ${3}0/;
    $s.=$_;
    $q.=$t;
  } elsif ($i) {
    $i=0;
    $s.=$q;
    $s.=$t;
  } else {
    $s.=$t;
  }
}
$s.=$q if $i;
print $s;

This User Gave Thanks to bartus11 For This Post:
# 16  
Old 06-07-2011
Still the same,

Can you please try last time ,to run the code for this input?
This is the original input without decreasing spaces between columns.

Code:
H:                            EURB891                                    00440000000064.00000000000000045100000972 DE0006231004                            1IFXd                20110607-08:03:22BNABFRPP            DE BNABFRPP            PARBFRPP                                                  #
H:                            EURS891                                    00440000000064.00000000000000045100000973 DE0006231004                            2IFXd                20110607-08:03:22BNABFRPP            DE BNABFRPP            PARBFRPP                                                  #
H:                            EUR1B892                B892               10440000000450.00000000000000300100000984 FR0000130007                            1ALUp                TRADETESTBIC5                        ZZ TRADETESTBIC5       TESTCLRXX                                                 #A
H:                            EUR1S892                S892               10440000000450.00000000000000300100000985 FR0000130007                            2ALUp                TRADETESTBIC5                        ZZ TRADETESTBIC5       TESTCLRXX                                                 #R
H:                            EURS893                                    00440000000050.00000000000000300100000986 FR0000120628                            2CSp                 20110607-08:27:31TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #
H:                            EURB893                                    00440000000050.00000000000000300100000987 FR0000120628                            1CSp                 20110607-08:27:31TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #

# 17  
Old 06-07-2011
EUR1B892 and EURB1892 are quite different... Try this:
Code:
#!/usr/bin/perl
open I, "$ARGV[0]";
@x=<I>;
$i=0;
for (@x){
  s/ +$//;
  $t=$_;
  @s=split / +/;
  if ($#s==10){
    $i=1;
    s/([^ ]+ +EUR)1([SB]\d+ +)[^ ]+( +)1/$1$2     ${3}0/;
    $s.=$_;
    $q.=$t;
  } elsif ($i) {
    $i=0;
    $s.=$q;
    $s.=$t;
  } else {
    $s.=$t;
  }
}
$s.=$q if $i;
print $s;

This User Gave Thanks to bartus11 For This Post:
# 18  
Old 06-07-2011
Sorry my mistake, it has to be always "EUR1B892"
Now it works, in meantime I've found another "issue".
As you can see highlighted, the time format in my original input in case of two rows which should be duplicited ,is UNIX time, what I need to do is to convert to this format "20110607-08:03:22" both 4 rows, as you can see in output
So in this case conversion from 30416938966 -> 20110607-08:06:40(this is just example)
This should be the last modification , thanks a lot.

INPUT
Code:
H:                            EURB891                                    00440000000064.00000000000000045100000972 DE0006231004                            1IFXd                20110607-08:03:22BNABFRPP            DE BNABFRPP            PARBFRPP                                                  #
H:                            EURS891                                    00440000000064.00000000000000045100000973 DE0006231004                            2IFXd                20110607-08:03:22BNABFRPP            DE BNABFRPP            PARBFRPP                                                  #
H:                            EUR1B892                B892               10440000000450.00000000000000300100000984 FR0000130007                            1ALUp                30416938966TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #A
H:                            EUR1S892                S892               10440000000450.00000000000000300100000985 FR0000130007                            2ALUp                30416938966TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #R

OUTPUT
Code:
H:                            EURB891                                    00440000000064.00000000000000045100000972 DE0006231004                            1IFXd                20110607-08:03:22BNABFRPP            DE BNABFRPP            PARBFRPP                                                  #
H:                            EURS891                                    00440000000064.00000000000000045100000973 DE0006231004                            2IFXd                20110607-08:03:22BNABFRPP            DE BNABFRPP            PARBFRPP                                                  #
H:                            EURB892                                    00440000000450.00000000000000300100000984 FR0000130007                            1ALUp                20110607-08:06:40TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #A
H:                            EURS892                                    00440000000450.00000000000000300100000985 FR0000130007                            2ALUp                20110607-08:06:40TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #R

H:                            EUR1B892                B892               10440000000450.00000000000000300100000984 FR0000130007                            1ALUp                20110607-08:06:40TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #A
H:                            EUR1S892                S892               10440000000450.00000000000000300100000985 FR0000130007                            2ALUp                20110607-08:06:40TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #R

---------- Post updated at 05:05 PM ---------- Previous update was at 04:27 PM ----------

Please check the update above, this should be everything.
Thanks

Last edited by hernand; 06-07-2011 at 08:15 PM..
# 19  
Old 06-08-2011
Are you sure "30416938966" is Unix time? Current Unix timestamp is "1307530654", so 23 times less than your number. Also using simple Perl converter doesn't seem to recognize your number as Unix time:
Code:
solaris% perl -e '$x=localtime(30416938966);print "$x\n"' 
Thu Jan  1 00:59:59 1970

While current time is converted properly:
Code:
solaris% perl -e '$x=localtime(1307530654);print "$x\n"'
Wed Jun  8 12:57:34 2011

This User Gave Thanks to bartus11 For This Post:
# 20  
Old 06-08-2011
Hi,

Sorry 30416938966 is not linux time as I was informed now,
it's microseconds elapsed since midnight.

So the problem is that the time in my original is in this format.
What I need is to replace the time in rows where we had additional column as you remember e with time in this format "20110607-08:26:56"
where :
20110607- is current day date
08:26:56 - converted from 30416938966 by dividing
As you may remember the spaces between the columns should remain the same.
As you can see in the INPUT the last 3 columns dont start at the same position, but after replacing , those will by positioned same.
So here is the transformation .

INPUT
Code:
H:                            EURB891                                      00440000000064.00000000000000045100000972 DE0006231004                              1IFXd                20110607-08:03:22BNABFRPP            DE   BNABFRPP            PARBFRPP                                                    #
H:                            EURS891                                      00440000000064.00000000000000045100000973 DE0006231004                              2IFXd                20110607-08:03:22BNABFRPP            DE   BNABFRPP            PARBFRPP                                                    #
H:                            EUR1B892                B892                 10440000000450.00000000000000300100000984 FR0000130007                              1ALUp                30416938966TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #
H:                            EUR1S892                S892                 10440000000450.00000000000000300100000985 FR0000130007                              2ALUp                30416938966TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #

OUTPUT
Code:
H:                            EURB891                                      00440000000064.00000000000000045100000972 DE0006231004                              1IFXd                20110607-08:03:22BNABFRPP            DE   BNABFRPP            PARBFRPP                                                #
H:                            EURS891                                      00440000000064.00000000000000045100000973 DE0006231004                              2IFXd                20110607-08:03:22BNABFRPP            DE   BNABFRPP            PARBFRPP                                                #
H:                            EURB892                                      00440000000450.00000000000000300100000984 FR0000130007                              1ALUp                20110607-08:26:56TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #
H:                            EURS892                                      00440000000450.00000000000000300100000985 FR0000130007                              2ALUp                20110607-08:26:56TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #

H:                            EUR1B892                B892                 10440000000450.00000000000000300100000984 FR0000130007                              1ALUp                20110607-08:26:56TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #
H:                            EUR1S892                S892                 10440000000450.00000000000000300100000985 FR0000130007                              2ALUp                20110607-08:26:56TRADETESTBIC5       PA TRADETESTBIC5       TESTCLRXX                                                 #

Thanks

Last edited by hernand; 06-08-2011 at 10:08 AM..
# 21  
Old 06-08-2011
Try:
Code:
#!/usr/bin/perl
open I, "$ARGV[0]";
@x=<I>;
chomp($d=`date +%Y%m%d`);
$i=0;
for (@x){
  s/ +$//;
  $t=$_;
  @s=split / +/;
  if ($#s==10){
    $i=1;
    s/([^ ]+ +EUR)1([SB]\d+ +)[^ ]+( +)1/$1$2     ${3}0/;
    /([^ ]+ +){5}(\d+)/;
    $h=int($2/3600000000);
    $m=int(60*($2/3600000000-$h));
    $sek=int(60*(60*($2/3600000000-$h)-$m));
    $time=sprintf "%02d:%02d:%02d",$h,$m,$sek;
    $date=$d . "-" . $time;
    s/(([^ ]+ +){5})\d+/$1$date/;
    $t=~s/(([^ ]+ +){6})\d+/$1$date/;
    $s.=$_;
    $q.=$t;
  } elsif ($i) {
    $i=0;
    $s.=$q;
    $s.=$t;
  } else {
    $s.=$t;
  }
}
$s.=$q if $i;
print $s;

This User Gave Thanks to bartus11 For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #550
Difficulty: Medium
The string concatenation operator can sometimes be combined with non-string types; numerical types.
True or False?

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Automate a task

Dear All, I am relatively new to UNIX and wanted to accomplish a simple task which should be automated. That's why I need your help. I shall briefly describe what I want. Basically, there is a process (X) (related to a particular software which I am using in my system) which automatically... (5 Replies)
Discussion started by: Samiran Dam
5 Replies

2. Homework & Coursework Questions

[HELP] Easy task

I have a simple task for my school work. I'm new with unix, so i need help. I need to write a scenario. Task is. From created txt file read first 3 words and create a 3 catalogs with those 3 words. 2 of those new catalogs should be transferred to other directory. If someone could help me just... (1 Reply)
Discussion started by: justynykas
1 Replies

3. Shell Programming and Scripting

task

Hi all, I'm newbie and stuck here. Thanks for any help. Input(txt file) a b X c d Y e f Z g h W Requested output: a b X Y c d Y X e f Z W g h W Z Please use code tags when posting data and code samples! (10 Replies)
Discussion started by: hernand
10 Replies

4. Shell Programming and Scripting

last task for my script

hi, infile- create table salary ( occupation_code char(40), earnings decimal(10,2), occ_yearend integer ); outfile- salary:create table salary salary:( occupation_code char(40), salary: earnings decimal(10,2), salary: occ_yearend integer salary:); Thanks. (4 Replies)
Discussion started by: dvah
4 Replies

5. Shell Programming and Scripting

Need a help to automate a task

I need to automate a manual task using shell scripting. The scenario is like :- #!/usr/bin/sh echo "please enter the name of the lab server to test ..." read s ssh $s This is peace of the script which will allow me to login to another server using "ssh". I have a conf file which is having... (4 Replies)
Discussion started by: Renjesh
4 Replies

6. Shell Programming and Scripting

Parse an XML task list to create each task.xml file

I have an task definition listing xml file that contains a list of tasks such as <TASKLIST <TASK definition="Completion date" id="Taskname1" Some other <CODE name="Code12" <Parameter pname="Dog" input="5.6" units="feet" etc /Parameter> <Parameter... (3 Replies)
Discussion started by: MissI
3 Replies

7. Shell Programming and Scripting

Need help with a manual task

I have an ASCII file that I receive on a monthly bases that is fixed length. I break the file into separate files based on a 5 character numerical sequence. I have 20 different sequences I have to find. the input file looks something like this xy-ins 2008yuthnrlsinrthsntwilgrha33260001... (4 Replies)
Discussion started by: jcalisi
4 Replies

8. Shell Programming and Scripting

comment and Uncomment single task out of multiple task

I have a file contains TASK gsnmpproxy { CommandLine = $SMCHOME/bin/gsnmpProxy.exe } TASK gsnmpdbgui { CommandLine = $SMCHOME/bin/gsnmpdbgui.exe I would like to comment and than uncomment specific task eg TASK gsnmpproxy Pls suggest how to do in shell script (9 Replies)
Discussion started by: madhusmita
9 Replies

9. UNIX for Dummies Questions & Answers

process vs task

Hi, I am new to this forum and unix too. I have just started learning unix. As I was going through the first chapter, I read that unix is multitasking, multiprogramming, multiprocessing and multiuser OS. My question is: Is there any difference between a TASK and a PROCESS. How are PROCESS... (2 Replies)
Discussion started by: hana
2 Replies

Featured Tech Videos