Need help to write script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help to write script
# 1  
Old 02-03-2012
Need help to write script

I am having a File format as mentioned below

Employee id|Name|Languages

12345|Hema|02|English|Hindi
4567|Basha|03|Engligh|Hindi|Telegu

the 02 and 03 are counters. Using that we need to generate the output records as mentioned below

12345|Hema|English
12345|Hema|Hindi

4567|Basha|English
4567|Basha|Hindi
4567|Basha|Telegu

Please help me to write a script.

I am trying to write using awk and having two counters as below

one counter in loop which will decriment and another counter which will be incremented for printing.

Moderator's Comments:
Mod Comment Please use next time code tags for your code and data

Last edited by vbe; 02-03-2012 at 08:44 AM..
# 2  
Old 02-03-2012
Hi bashamsc,

Try with this perl script:
Code:
$ cat infile
12345|Hema|02|English|Hindi
4567|Basha|03|Engligh|Hindi|Telegu
$ cat script.pl
use warnings;
use strict;

die qq[Usage: perl $0 <input-file>\n] unless @ARGV == 1;

while ( <> ) {
        chomp;
        my @f = split /\|/;
        for my $i ( 3 .. $#f ) {
                printf qq[%s\n], join qq[|], @f[0..1], $f[ $i ];
        }
}
$ perl script.pl infile
12345|Hema|English
12345|Hema|Hindi
4567|Basha|Engligh
4567|Basha|Hindi
4567|Basha|Telegu

Regards,
Birei
This User Gave Thanks to birei For This Post:
# 3  
Old 02-03-2012
Another way

Code:
$ awk 'BEGIN {FS=OFS="|"}{for (i=4;i<=4+($3-1);i++) {print $1,$2,$i}}' file
12345|Hema|English
12345|Hema|Hindi
4567|Basha|Engligh
4567|Basha|Hindi
4567|Basha|Telegu
$

This User Gave Thanks to clx For This Post:
# 4  
Old 02-03-2012
Code:
$ nawk -F\| '{for(i=4;i<=NF;i++){a[i]=$1"|"$2"|"$i}{for(i in a){print a[i]}}}' sample.txt
12345|Hema|English
12345|Hema|Hindi
4567|Basha|Engligh
4567|Basha|Hindi
4567|Basha|Telegu

This User Gave Thanks to itkamaraj For This Post:
# 5  
Old 02-03-2012
I have written below code and it is working

Code:
while read line    
do    
	emp_id=`echo $line | awk -F'|' '{print $1}'`
	name=`echo $line | awk -F'|' '{print $2}'`

	counter=`echo $line | awk -F'|' '{print $3}'`
	counter1=4 

 	while [[ $counter -gt 0 ]]  
	do
	  								
		language=`echo $line |cut -f$counter1 -d"|"`
									
		counter1=`expr $counter1 + 1`
		counter=`expr $counter - 1`
									
		echo $emp_id'|'$name'|'$language>>file1.txt
	done


done <file.txt



Thanks for all response

Last edited by bashamsc; 02-03-2012 at 01:51 PM.. Reason: code tag
# 6  
Old 02-06-2012
If i have delimiter "|~|" instead of "|" then what will be the code.
# 7  
Old 02-06-2012
I'd just process the data first with sed 's/|~|/|/g' data | ...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Please help me to write the script

Hi All, I have written the follwing script to take the backup of the file every day along with the date. DATE=`date +%Y%m%d` export DATE cp var/hr/hr333m.txt cp var/hr/payments/hr333m_$DATE.txt The file name as follows after taking the backup. hr333m_20110630.txt Could you... (3 Replies)
Discussion started by: ajaykumarkona
3 Replies

2. IP Networking

read/write,write/write lock with smbclient fails

Hi, We have smb client running on two of the linux boxes and smb server on another linux system. During a backup operation which uses smb, read of a file was allowed while write to the same file was going on.Also simultaneous writes to the same file were allowed.Following are the settings in the... (1 Reply)
Discussion started by: swatidas11
1 Replies

3. Shell Programming and Scripting

Q: How to write this script?

Hi there :rolleyes: I have a folder called backup it is path is: ~/backup Inside this folder, there are four files: ~/backup/test1.cpp ~/backup/test2.cpp ~/backup/test3.cpp ~/backup/PATHS.TXT The fourth file PATHS.TXT contains the original paths for the three files. This is the... (4 Replies)
Discussion started by: domain
4 Replies

4. AIX

how to write this script?

If I need delete some disk, for i in hdisk1 hdisk2 hdisk3 hdisk4 do rmdev -dl $i done if I have more than 100 hdisks, how to write a script like that to delete them? (6 Replies)
Discussion started by: rainbow_bean
6 Replies

5. Shell Programming and Scripting

Script Help - Another Way To Write This

I am adapting an Open Step ping server script to Ubuntu 8.10 and one section of my script isn't working # if there are servers that just went down or came back up, notify # with high importance if ; then echo notifying of servers that are up again or just now down notify high # if there... (2 Replies)
Discussion started by: gbxfan
2 Replies

6. Shell Programming and Scripting

Better way to write this script

Hi All, I have written the following script. I have just repeated some commands, and I am sure there is a more better way to do it. I hope I one of gurus here will help me make it in a better shape. Here is the script: #! /bin/sh sed -i -e "s/test2.xxx/test3.xxx/" -e "s/output2/output3/"... (2 Replies)
Discussion started by: faizlo
2 Replies

7. UNIX for Dummies Questions & Answers

Should I write a PERL Script or Shell Script?

Hello, I have done some BASIC shell scripting/PERL scripting before so I am familiar with the languages. I am not really sure which one would lend itself better to the application I have to write. I am required to scan the message logs for possible break in attempts. If I use shell scripting... (2 Replies)
Discussion started by: mojoman
2 Replies

8. Shell Programming and Scripting

Please write this script for me

UNIX shell script (Bourne shell syntax) called admin_script. This script is described below as a usage summary: admin_script Note: if no options are specified, a menu is displayed which allows users to perform one of the following tasks and then exit. If incorrect options are provided,... (1 Reply)
Discussion started by: nadman123
1 Replies

9. Shell Programming and Scripting

Help me to write the script

Actually i am working with two diffrent files having same structure each file contain Ten diffrent column and i want to write a script which will compare the colummns of first file with the column of second file and diiference will be send to the first column of third file . similarly for... (5 Replies)
Discussion started by: gyana_cboy
5 Replies

10. Shell Programming and Scripting

Help! Need to write my first script

Hi Folks! I am a MacUser and am trying to learn Unix for the last few months. I will explain in detail what I am trying to do, and apreciate you help if you can teach me even if it is a single comand line inside the script. I own a small company, where I manufacture special gypsums and... (5 Replies)
Discussion started by: fundidor
5 Replies
Login or Register to Ask a Question