unix question, new here


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers unix question, new here
# 1  
Old 10-22-2007
unix question, new here

hi,


i have a file with content looking like this

|ABIANA:MMATA:|MATA:ADRIANA:|
|ABIANA:MROSALES:|ROSALES:ADRIANA:|
|ADRIANA:MTOMPOS:|TOMPKINS:ADRIANA:|
|ADRIANA:REYES:|GARCIA:ADRIANA:|
|ADRIANA:RODRIGUEZ:|ADRIANA:CORONA:|
|ADRIANA:RSPICUZZA:|SPICUZZA:ADRIANA:|
|ADRIANA:SARIAS:|ARIAS:ADRIANA:|
|ADRIANA:SCUA:|CUA:ADRIANA:|
|ADRIANA:VCARPENTER:|CARPENTER:ADRIANA:|


i need some help to get some commands to acheive the fallowing.


what im trying to do is drop the "|"
use the ":" as delimeters so there are 4 fields.

ex: 1:2:3:4:

im looking to return a line if there are none that match

ex: |ABIANA:MMATA:|MATA:ADRIANA:|
line one should be returned because there are no matching names.
|ADRIANA:VCARPENTER:|CARPENTER:ADRIANA:|
this line should be ignored since there is at least 1 matching name, in this case ADRIANA.




so been able to break the field into individual files and do a comm comand, but that didnt work out to well.



thanks
# 2  
Old 10-22-2007
two possibilites

use sed to get rid of pipe symbols - then pipe results to awk with the Field Separator = ":"

second is just use awk - use gsub to get rid of pipe symbols, then use split to break the fields apart.
# 3  
Old 10-22-2007
Quote:
Originally Posted by awk
two possibilites

use sed to get rid of pipe symbols - then pipe results to awk with the Field Separator = ":"

second is just use awk - use gsub to get rid of pipe symbols, then use split to break the fields apart.
thanks for the reply,


how would i compare though? the end result should be the lines with no matching names.
# 4  
Old 10-23-2007
to drop the pipes, use

Code:
sed 's/|//g' filename

# 5  
Old 10-23-2007
for the comparison part,

only two of the lines matched

am sure this could be optimised

Code:
sed 's/|//g' a | awk '{ for( i in x ) { x[i] = 0}; split($0, arr, ":"); for ( i in arr ) { x[arr[i]]++; if ( x[arr[i]] > 1 ) { d=1 } }; if ( d != 1 ) { print $0 } }'

# 6  
Old 10-23-2007
With zsh:
Code:
while IFS= read -r;do 
	n=(${(u)${=REPLY//[|:]/ }})
	(($#n==4))&&print -r "$REPLY"
done<file

Example:
Code:
% cat file
|ABIANA:MMATA:|MATA:ADRIANA:|
|ABIANA:MROSALES:|ROSALES:ADRIANA:|
|ADRIANA:MTOMPOS:|TOMPKINS:ADRIANA:|
|ADRIANA:REYES:|GARCIA:ADRIANA:|
|ADRIANA:RODRIGUEZ:|ADRIANA:CORONA:|
|ADRIANA:RSPICUZZA:|SPICUZZA:ADRIANA:|
|ADRIANA:SARIAS:|ARIAS:ADRIANA:|
|ADRIANA:SCUA:|CUA:ADRIANA:|
|ADRIANA:VCARPENTER:|CARPENTER:ADRIANA:|
% while IFS= read -r;do
        n=(${(u)${=REPLY//[|:]/ }})
        (($#n==4))&&print -r "$REPLY"
done<file
|ABIANA:MMATA:|MATA:ADRIANA:|
|ABIANA:MROSALES:|ROSALES:ADRIANA:|

Or without pipes:
Code:
% while IFS= read -r;do
        n=(${(u)${=REPLY//[|:]/ }})
        (($#n==4))&&print -r "${REPLY//|}"
done<file
ABIANA:MMATA:MATA:ADRIANA:
ABIANA:MROSALES:ROSALES:ADRIANA:

# 7  
Old 10-23-2007
hi guys, i used this,

seemed to work out fine.

sed "s/|//g" file.txt

awk -F: '{if($1 != $3){if($1 != $4){if($1 != $5){if($1 != $6){if($2 != $3){if($2 != $4){if($2 != $5){if($2 != $6){if($3 != $4){if($3 != $5){if($3 != $6){if($4 != $5){if($4 != $6){if($5 != $6)printf("%s %s\n", $1, $4);}}}}}}}}}}}}}}' z > good2.txt


thanks.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Question on UNIX

Hi, Can you please advise on answers of below 4 questions as I am not sure on the answers. 1. You are porting a C program that interacts over a network with remote systems. The program was originally written on AMD64 Linux. You are migrating it to SPARC Solaris architecture. Question Based on... (1 Reply)
Discussion started by: Vivekit82
1 Replies

2. UNIX for Dummies Questions & Answers

UNIX question

Pleas I want answer this question or reference or link website can find answer to this question? 1. We consider that we are running on a UNIX system which uses ACL as a mechanism for file protection. Where is the protection information of the file stored? 2. In UNIX, each device is... (1 Reply)
Discussion started by: tamer11007
1 Replies

3. UNIX for Dummies Questions & Answers

Unix question

When you enter your login id and password, what determines what program startsup? Is it always a Unix shell? (3 Replies)
Discussion started by: Alice Klein
3 Replies

4. Solaris

Unix Question

IF A program or database routine is writing in a file laying on unix box then how can be identify the process id which is writing in the file. Please let me know how can we do using root command and without root command? Regards, Shashank (10 Replies)
Discussion started by: TAPARIA
10 Replies

5. UNIX for Dummies Questions & Answers

Question about unix

Hey everyone i am new to unix as well, has anybody heard of the script that allows you screen to look just like the Windows screen, if yea, what is it? (3 Replies)
Discussion started by: Gueso
3 Replies

6. UNIX for Dummies Questions & Answers

Unix History Question: Why are filenames/dirnames case sentsitive in Unix?

I tried looking for the answer online and came up with only a few semi-answers as to why file and directory names are case sensitive in Unix. Right off the bat, I'll say this doesn't bother me. But I run into tons of Windows and OpenVMS admins in my day job who go batty when they have to deal... (3 Replies)
Discussion started by: deckard
3 Replies

7. UNIX for Dummies Questions & Answers

Unix 10.2 question

I'm a verteran to Windows but i newbie to UNIX so i hope this isn't too dumb of a question. I have an HP 9000 D Class Server that has 10.2 and uses a console. The console died and i was told i can put a standard EISA video card in it and use a regualr monitor and keyboard. My question is how do i... (5 Replies)
Discussion started by: egress1
5 Replies

8. IP Networking

unix to unix serial connection question

hi there i'm a new bie just got few simple questions to ask. I got expert in windows configuration but totally new to unix environment . I want to make sure a com port (com1) is working, so I connect a 9-pin cable (CB9) for both PC using Unix environment (unix to unix). The question are (1)... (1 Reply)
Discussion started by: typsam
1 Replies

9. UNIX for Dummies Questions & Answers

unix question

How might you look at the last mail message someone sent you , without running the mail utility? (1 Reply)
Discussion started by: swetha
1 Replies
Login or Register to Ask a Question