Script for Country Codes


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Script for Country Codes
# 1  
Old 03-31-2008
Script for Country Codes

Dear All

I have a file which contains lines looks like this:

ISC Egypt-Alex2 126 104541338 218926893238 f 1B

ISC BT-Colindale 26 249126190534 218913486850 b 29

ISC Egypt-Cairo2 199 129026052 218927661509 b 26


As you see in each line $4 and $5 are phone numbers , i want a script which process this file and its output should be like this :

ISC Egypt-Alex2 126 104541338 218926893238 f 1B Egypt-Vodafone Libya-Libyana


ISC BT-Colindale 26 249126190534 218913486850 b 29 ZAIN Sudan Libya-Madar

ISC Egypt-Cairo2 199 129026052 218927661509 b 26 Mobinil-Egypt Libya-Libyana


As you see there i need two fields to be added according the country code of the phone numbers

For sure there are another country codes so please can any one advise how could it be done on some country codes as example and i will add the others by analogy

Thanks and waiting
Zanetti321
# 2  
Old 03-31-2008
Additional Info

Adding to my last request the file containing this line contains about 300000 lines so the script should be somehow fast.

Thanks
Zanetti
# 3  
Old 03-31-2008
Not going to happen until you tell us where we can obtain the information that you want to be added to each line.

If you need it to be fast, it sounds like you might want to port all of this to an SQL database, depending somewhat on how often you will need to do this processing.
# 4  
Old 03-31-2008
Reply

Dear Era

The Information needed will be a simple file for example list of country codes and the corresponding country for example:

Egypt-Vodafone 2010
Egypt-Mobinil- 2012
Vodafone-UK 447
ZAIN-Sudan 24912
Libya-Libyana 21892

So the script should add the two new fields with the names of countries according to code of $4 and $5

i can prepare to you a file and send it to you if this is the information you need , if else please update me

Regarding the speed i wont prefer to load the data to my SQL because it will waste time for me so please can you have subsitute solution after sending you the required file you need.

Thanks
Zanetti
# 5  
Old 04-01-2008
You want speed, but loading it up into a faster engine is a waste of your time? Well, your call.

Load the prefix code to operator mapping into a hash and the rest will be trivial. Prepare to learn some Perl if you don't know it already.

Code:
#!/usr/bin/perl

use warnings;
use strict;

my %mapping;

open (F, "mappings.txt") || die "$0: could not open mappings.txt: $!\n";
while (<F>) {
  chomp;
  my ($op, $code) = m/(.*\S)\s+(\d+)$/;
  $mapping{$code} = $op;
}
close F;

my $keys = join ("|", keys %mapping);
my $r = qr/^($keys)/;

while (<>)
{
  my @F = split;
  if (defined $F[3] && $F[3] =~ $r) {
    print "$F[3] matches $1, maps to $mapping{$1}\n";
  }
  if (defined $F[4] && $F[4] =~ $r) {
    print "$F[4] matches $1, maps to $mapping{$1}\n";
  }
}

This is only very briefly tested, proof of concept code. The output is not what you want, but I trust you can glue things together (by trial and error, if not otherwise). Google for a quick Perl intro if you are not familiar with the language, there are tons of those.
# 6  
Old 04-01-2008
In case it's not painfully obvious, it expects the operator to mapping table in a text file called mappings.txt in the current directory, and reads standard input. Here is a demo run.

Code:
vnix$ ls -l map mappings.txt
-rw-r--r-- 1 era era 516 2008-04-01 09:06 map
-rw-r--r-- 1 era era  93 2008-04-01 09:02 mappings.txt

vnix$ perl ./map <<HERE
> ISC Egypt-Alex2 126 104541338 218926893238 f 1B
> ISC BT-Colindale 26 249126190534 218913486850 b 29
> ISC Egypt-Cairo2 199 129026052 218927661509 b 26
> HERE
218926893238 matches 21892, maps to Libya-Libyana
249126190534 matches 24912, maps to ZAIN-Sudan
218927661509 matches 21892, maps to Libya-Libyana

vnix$ cat mappings.txt
Egypt-Vodafone 2010
Egypt-Mobinil- 2012
Vodafone-UK 447
ZAIN-Sudan 24912
Libya-Libyana 21892

# 7  
Old 04-01-2008
Reply

Dear Era

Thanks for your reply; just i want to check on a certain issue:

Regarding mapping.txt files it will contain large number of country codes ; so will this affect or it is ok?

Regarding your code what i understand that the first block is loading the mapping.txt into hash then the second block is reading my lines and matching it with the hash contents

If you please tell me the meaning of each line just to understand if this will disturb you so no problem.

Thanks for co-operation
Zanetti
Login or Register to Ask a Question

Previous Thread | Next Thread

6 More Discussions You Might Find Interesting

1. Forum Support Area for Unregistered Users & Account Problems

Registering from blocked country

Hi, I'm come from Vietnam and want to join to Unix forum just because I like Unix programming and want to learning more. My IP is allocate by DHCP server so it is dynamic. Here is my desired username and my email: Username: lucasdo Email: rennersstar@gmail.com Thank you very much for... (0 Replies)
Discussion started by: lucasdo
0 Replies

2. Shell Programming and Scripting

ip 2 country sorting[solved]

Dear folks. I have list of ip address from different country, i would like check from script this ip address belong to which country, please suggest any command, i have more than 200 ip address so i need to do it via script. Script will show me country code and its City if possible? ... (0 Replies)
Discussion started by: learnbash
0 Replies

3. Shell Programming and Scripting

Bash Shell Script Exit Codes

Here is my daily stupid question: How can I tell a script to only execute if the other scripts exits successfully? So "script A" executes and it executes successfully (0),then "script B" will run or else "script A "executes and it exits unsucessfully (1) then "script B" will read return... (6 Replies)
Discussion started by: metallica1973
6 Replies

4. Shell Programming and Scripting

'watch' not interpreting escape codes in bash script

Hi there, I'm fairly new to bash scripting and already having some troubles. I'm making a script that can print some series of strings in colors based in the information of a file, for simplicity let's say it only does: #!/bin/bash printf "\eWhen you execute this in the command line it... (1 Reply)
Discussion started by: Arashi
1 Replies

5. Shell Programming and Scripting

whois country help

Hello folks, I have list of ips like 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 whois 1.1.1.1 |grep -E 'country|Country' it show country=US or whatever. so i have number of ips in text file, how i can use above script to automate output like 1.1.1.1 US 2.2.2.2 CA 3.3.3.3 FR (3 Replies)
Discussion started by: learnbash
3 Replies

6. UNIX for Advanced & Expert Users

Country Codes script faster response ;please help

Dear all I have group of input lines which look like this These input lines is placed in a file named phonelines.txt and there is a script which match $4 and $5 with country codes placed in another file named country-codes.txt and its contents is : Italy 39 Libyana 21892 Thuraya... (12 Replies)
Discussion started by: zanetti321
12 Replies
Login or Register to Ask a Question