Visit Our UNIX and Linux User Community


Task


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Task
# 8  
Old 06-07-2011
Ok, so if three consecutive lines have 11 columns, then three new lines should be inserted above them? Example.. input:
Code:
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:   EURB1892  B892      10440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #

output:
Code:
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:   EURB892             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:   EURB1892  B892      10440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #

? And the same for 4 consecutive lines, etc?
This User Gave Thanks to bartus11 For This Post:
# 9  
Old 06-07-2011
In my file there will be never any three consecutive lines together.
It's always just pairs. But it can happen that there will be
2 x couples =4 lines beneath each other e.g.

INPUT
Code:
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            #

then output should look like this
OUTPUT
Code:
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            #

Thanks a lot

Last edited by hernand; 06-07-2011 at 06:58 PM..
# 10  
Old 06-07-2011
Try this script:
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;
  }
}
print $s;

Run it like this: ./script.pl file
This User Gave Thanks to bartus11 For This Post:
# 11  
Old 06-07-2011
Thanks, works almost perfect
except that in the new lines there are additional columns (highlighted), which should be deleted.

current OUTPUT
Code:
H:   EURS892   S892      00440000000000.003000000450    FR0000130007   2ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURB892   B892      00440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURB893   B893      00440000000000.003000000450    FR0000130007   1ALUp   20110607-08:34:25TRADETES   PA TRADETES    TESTCLRXX            #
H:   EURS893   S893      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            #

required OUTPUT
Code:
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            #

# 12  
Old 06-07-2011
Can you post more sample input? That column is not present in the output if I run that script on the sample data that you provided earlier. Show the input that you used to get above output.
# 13  
Old 06-07-2011
Code:
$ nawk '{if(NF>10) {print $0"-"NR"\n"$0} else {print $0}}' input.txt|nawk 'NF>11 {$2="EUR"$3;$3="";$NF=""}{print |"sort -n -k3 -r"}'

Thanks
Sha
This User Gave Thanks to Shahul For This Post:
# 14  
Old 06-07-2011
Hi,

Please applicate the conde on this input:
Code:
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:   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            #


Previous Thread | Next Thread
Test Your Knowledge in Computers #1009
Difficulty: Easy
The number 128 in base 10 equals 64 in base 16.
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