buzzme
November 5, 2015, 5:22pm
1
Can someone help me to get two different outputs mentioned in code tags.
Input:
user=alexander
registeredwebsite=yahoo.com
user=james
registeredwebsite=gmail.com
registeredwebsite=fb.com
registeredwebsite=google.com
user=kelly
registeredwebsite=gmail.com
registeredwebsite=fb.com
registeredwebsite=google.com
user=natasha
registeredwebsite=gmail.com
registeredwebsite=fb.com
registeredwebsite=yahoo.com
user=bipasha
registeredwebsite=hotmail.com
registeredwebsite=medicus.com
registeredwebsite=yahoo.com
user=paul
registeredwebsite=yahoo.com
user=mike
registeredwebsite=yahoo.com
Need List of users registered only in yahoo.com
website.
Output-1:
Users Registered only on yahoo.com
website are:
user=alexander
user=paul
user=mike
Need list of users registered not only yahoo
but also other websites.
Output-2:
Users Registered on yahoo.com
but also other websites are:
user=natasha
user=bipasha
With all of the help you got on your last request: Need help for count using shell , you must have a good start on a script to do this.
Show us what you have tried, show us the output it produces (both normal output and diagnostic messages).
1 Like
buzzme
November 5, 2015, 6:02pm
3
Hi Don Cragun,
I tried below but it did't worked.
awk '/pattern/{nr[NR]; nr[NR+4]}; NR in nr' file
Aia
November 5, 2015, 9:44pm
4
[buzzme]$ awk '/yahoo\.com/ && NF==2 {print $1}' RS= buzzme.file
user=alexander
user=paul
user=mike
[buzzme]$ awk '/yahoo\.com/ && NF>2 {print $1}' RS= buzzme.file
user=natasha
user=bipasha
---------- Post updated at 07:44 PM ---------- Previous update was at 06:56 PM ----------
perl -00 -alne '
/yahoo\.com/ and push @{$yahoo{scalar @F == 2}}, $F[0];
END{ print "Yahoo Only:\n", join "\n", @{$yahoo{1}};
print "Yahoo Plus:\n", join "\n", @{$yahoo{$undef}};
}
' buzzme.file
Yahoo Only:
user=alexander
user=paul
user=mike
Yahoo Plus:
user=natasha
user=bipasha
1 Like
Small variation:
awk -F= 'NF==4 && $4=="yahoo.com"{print $2}' RS= file
alexander
paul
mike
The condition for using RS=
(set the RS variable to an empty string) is that the separation between segments must consist of two or more consecutive newlines, nothing else (no extra spaces).
--
Otherwise, try something like:
awk -F= '$1=="user"{if(n)print n; n=$2; next} NF && $2!="yahoo.com"{n=""} END{if(n)print n}' file
or:
awk -F= '$1=="user"{if(n)print n; n=$2; next} $1=="registeredwebsite" && $2!="yahoo.com"{n=""} END{if(n)print n}' file
1 Like
users={}
mark=[]
with open("a.txt") as file:
for line in file:
line=line.replace("\n","")
if len(line)==0:
continue
if 'user=' in line:
user=line
else:
if user in users:
users[user] += 1
else:
users[user] = 1
if 'yahoo' in line:
mark.append(user)
print("========not only yahoo=========")
for user in mark:
if users[user]>1:
print(user)
print("========yahoo=========")
for i in mark:
print(i)
print("========only yahoo=========")
for i in mark:
if users==1:
print(i)
1 Like