Sponsored Content
Full Discussion: PERL Text Munging
Top Forums Shell Programming and Scripting PERL Text Munging Post 302269143 by stateful on Wednesday 17th of December 2008 01:31:19 AM
Old 12-17-2008
PERL Text Munging

I have a file like this:

Code:
host1,neighbor1
host3,neighbor4
host2,neighbor1
host2,neighbor3
host1,neighbor3
host3,neighbor1
host1,neighbor2
host3,neighbor2

I need some PERL magic that will generate output like this:
Code:
host1,neighbor1,neighbor3,neighbor2
host2,neighbor1,neighbor3
host3,neighbor4,neighbor1,neighbor2

What's happening here is the script looks at the first csv value and get's unique host IDs throughout the whole file, then loops through to get all of the neighbors associated with that Host ID and outputs a line in the form of:
host,neighborX,neighborX,neighborX,...
So there's only one line per actual host and all of the neighbors of that host follow it. The order of those neighbors after the host doesn't matter as long as there is only one instance of each neighbor.

Here is it in quick-n-dirty shell. I have more to do with the data afterward which is why I need it in PERL but it's been kicking my butt thus far.

Code:
bash-2.05a$ cat inputfile 
host1,neighbor1
host3,neighbor4
host2,neighbor1
host2,neighbor3
host1,neighbor3
host3,neighbor1
host1,neighbor2
host3,neighbor2
bash-2.05a$ cat itinshell.sh 
#!/bin/sh
for k in `cat inputfile | awk -F, '{print $1}' | sort -u`
do
  /usr/ucb/echo -n $k
  for i in `grep $k inputfile | awk -F, '{print $2}'`
  do
    /usr/ucb/echo -n ",$i"
  done
  echo
done
bash-2.05a$ ./itinshell.sh 
host1,neighbor1,neighbor3,neighbor2
host2,neighbor1,neighbor3
host3,neighbor4,neighbor1,neighbor2

Thanks,
Stateful
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl text file

I've got a csv file called "passlist.txt" which looks like: firstname1,lastname1,checkin1,numberofbags1,destination1 firstname2,lastname2,checkin2,numberofbags2,destination2 firstname3,lastname3,checkin3,numberofbags3,destination3 " " " " ... (5 Replies)
Discussion started by: Sn33R
5 Replies

2. Shell Programming and Scripting

Text formatting in Perl.

Hiho, I've got a variable $sth = `du -sh /home/$whoami`; where $whoami is actually logged user. I want to have only the size of this directory eg. 2,7G. I know its lame, but anyway.. how to do it? (2 Replies)
Discussion started by: fenox
2 Replies

3. UNIX for Advanced & Expert Users

Need help take out few text in perl

I have perl program and I know that while sending an e-mail the following code returns "Remote (/opt/seasoft/db/nervecenter.nms00tst1):" in an email, I need to take out the entire "opt/seasoft/db/nervecenter" and leave with "ms00tst1" only. How do I do it: So the output would be "Remote... (3 Replies)
Discussion started by: amir07
3 Replies

4. Shell Programming and Scripting

perl script - data munging

Hi guys I'm trying to print the keys and values of data by using hashes and so on I was able to retrieve the key but not values. I'm getting result like this wrong -output chr1, 1 HASH(0x800d80)-> {arrayid} chr2, 1 HASH(0x800c9c)-> {arrayid} chr3, 1 HASH(0x80177c)-> {arrayid} chr4, 1 ... (2 Replies)
Discussion started by: nogu0001
2 Replies

5. Shell Programming and Scripting

Perl - Inserting text

Hey, I have 10 lines of text ... And I would like to Insert prefix for each line with static text. perl -pi -e 's/()/$1 TEST$./' data.txt Each line will have different static prefix, Code above works perfectly for 1st line ... I'm just not sure how I can run same command for 2nd line 3rd... (4 Replies)
Discussion started by: NDxiak
4 Replies

6. Shell Programming and Scripting

Perl Text manipulation

Hello All, I have been working on a great script to remotely gather server info and store it in a .txt that can be imported to .xls I have been reading the hostnames that are in the /.shh/known_hosts file so I don't have to mess with passing a password - via ssh (not easy to do , by the... (1 Reply)
Discussion started by: dfezz1
1 Replies

7. Shell Programming and Scripting

Perl Text Manipulation

I'm in need of help for a project that I'm working on. I believe Perl would be the best way of handling the string manipulation, however, I've barely used perl, and I'm used to BASH scripting. Another note is, this project is in a Windows environment, so I can use Perl, but I do not have shell... (1 Reply)
Discussion started by: drewrockshard
1 Replies

8. Shell Programming and Scripting

Text allignment using PERL

Hi Friends, For daily reports i make perl script like below. @dirlist = `cat out.txt |cut -d "|" -f1 >create.txt`; @dirlist1 = `cat out.txt|wc -l *e* >create2.txt`; open FILE, ">OUTPUT.txt"; @command = `cat out.txt |cut -d "|" -f1`; print FILE map{$_-2 ."\n"}@command; @dirlist2 =... (1 Reply)
Discussion started by: adaleru
1 Replies

9. Shell Programming and Scripting

TEXT to CSV using Perl

Hi Folks Need some help with this and my Perl isnt the hottest I also have text::csv installed on my perl install The large text with a few million entries is in a format below example text file Fig Leafs Cake No: 0000001 Author: King s. Record No: 995-34343-232-232... (5 Replies)
Discussion started by: messiah1
5 Replies

10. Shell Programming and Scripting

Perl text from web

perl -MLWP::Simple -le '$s=shift;$c=get("http://genetics.emory.edu/egl/tests/view.php?testid=4125/$s/");$c=~/meta content=(.*?)name=\"Genes\"/msg; print length($1),"\t$1"' "Test Description" >output.txt I am having trouble with this code: Can it be modified for the desired output? I attached... (3 Replies)
Discussion started by: cmccabe
3 Replies
PASSMASS(1)						      General Commands Manual						       PASSMASS(1)

NAME
passmass - change password on multiple machines SYNOPSIS
passmass [ host1 host2 host3 ... ] INTRODUCTION
Passmass changes a password on multiple machines. If you have accounts on several machines that do not share password databases, Passmass can help you keep them all in sync. This, in turn, will make it easier to change them more frequently. When Passmass runs, it asks you for the old and new passwords. (If you are changing root passwords and have equivalencing, the old pass- word is not used and may be omitted.) Passmass understands the "usual" conventions. Additional arguments may be used for tuning. They affect all hosts which follow until another argument overrides it. For example, if you are known as "libes" on host1 and host2, but "don" on host3, you would say: passmass host1 host2 -user don host3 Arguments are: -user User whose password will be changed. By default, the current user is used. -rlogin Use rlogin to access host. (default) -slogin Use slogin to access host. -ssh Use ssh to access host. -telnet Use telnet to access host. -program Next argument is a program to run to set the password. Default is "passwd". Other common choices are "yppasswd" and "set passwd" (e.g., VMS hosts). A program name such as "password fred" can be used to create entries for new accounts (when run as root). -prompt Next argument is a prompt suffix pattern. This allows the script to know when the shell is prompting. The default is "# " for root and "% " for non-root accounts. -timeout Next argument is the number of seconds to wait for responses. Default is 30 but some systems can be much slower logging in. -su Next argument is 1 or 0. If 1, you are additionally prompted for a root password which is used to su after logging in. root's password is changed rather than the user's. This is useful for hosts which do not allow root to log in. HOW TO USE
The best way to run Passmass is to put the command in a one-line shell script or alias. Whenever you get a new account on a new machine, add the appropriate arguments to the command. Then run it whenever you want to change your passwords on all the hosts. CAVEATS
Using the same password on multiple hosts carries risks. In particular, if the password can be stolen, then all of your accounts are at risk. Thus, you should not use Passmass in situations where your password is visible, such as across a network which hackers are known to eavesdrop. On the other hand, if you have enough accounts with different passwords, you may end up writing them down somewhere - and that can be a security problem. Funny story: my college roommate had an 11"x13" piece of paper on which he had listed accounts and passwords all across the Internet. This was several years worth of careful work and he carried it with him everywhere he went. Well one day, he forgot to remove it from his jeans, and we found a perfectly blank sheet of paper when we took out the wash the following day! SEE ALSO
"Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" by Don Libes, O'Reilly and Associates, January 1995. AUTHOR
Don Libes, National Institute of Standards and Technology 7 October 1993 PASSMASS(1)
All times are GMT -4. The time now is 12:37 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy