Search string within a file and list common words from the line having the search string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Search string within a file and list common words from the line having the search string
# 8  
Old 10-15-2013
Quote:
Originally Posted by ctsgnb
The formatting may not be exactly the expected one but all the needed info will still be there:
Assuming your file is exactly formatted as you stated

Code:
$ sed '/human/!d;s/.*name=/human\n/' yourfile | sort | uniq -c

Hi ctsgnb,
Kindly please explain the command you have pasted. It gives the output without formatting - its fine.
Also if the line would have been ...
Hello, i am human and name="ABCD" now.

In this case how would we extract ABCD.

thanks in advance!
# 9  
Old 10-15-2013
sed 'start of the sed statement
/human/!dlines that do not (!) match "human" are deleted
s/substitute
.any character
*repeted 0 or more times
name=followed by "name="
/human\n/replace it with "human" followed by a new line
' yourfileend of the sed statement
At this state, the output consist of one column made of "human" and relating <name>

| sort --> the output is then sorted

| uniq -c --> then this command counts the number of each occurrence (suppose they are pre-sorted see man uniq)

You may want to try this one which is a little more elaborate and which remove the last word of the line (last word which does not contains = sign nor <space> and which is preceeded by a dot or a space (this dot or space will also be removed)
Code:
sed '/human/!d;s/[ .][^= ]*$//;s/.*name=/human\n/' yourfile | sort | uniq -c


Last edited by ctsgnb; 10-15-2013 at 10:49 AM..
This User Gave Thanks to ctsgnb For This Post:
# 10  
Old 10-15-2013
Try if you want to count all field this

Code:
$ awk -F'[ ,=]' '/^Hello/{for(i=1;i<=NF;i++)A[$i]++}END{for (i in A)if(i!="")print "count of " "\""i"\"""=" OFS A[i]}' OFS=\\t file

Code:
count of "i"=    4
count of "XYZ."=    1
count of "and"=    4
count of "name"=    4
count of "Hello"=    4
count of "ABCD."=    2
count of "am"=    4
count of "PQRS."=    1
count of "human"=    4

if you want to count only few fields you can do like this
Code:
$ awk -F'[ ,=]' '/^Hello/{for(i=1;i<=NF;i++){if(($i~"ABCD")||($i~"PQRS")||($i~"XYZ")||($i~"human"))A[$i]++}}END{for (i in A)print "count of " "\""i"\"""=" OFS A[i]}' OFS=\\t file

Code:
count of "XYZ."=    1
count of "ABCD."=    2
count of "PQRS."=    1
count of "human"=    4

# 11  
Old 10-21-2013
Quote:
Originally Posted by ctsgnb
sed 'start of the sed statement
/human/!dlines that do not (!) match "human" are deleted
s/substitute
.any character
*repeted 0 or more times
name=followed by "name="
/human\n/replace it with "human" followed by a new line
' yourfileend of the sed statement
At this state, the output consist of one column made of "human" and relating <name>

| sort --> the output is then sorted

| uniq -c --> then this command counts the number of each occurrence (suppose they are pre-sorted see man uniq)

You may want to try this one which is a little more elaborate and which remove the last word of the line (last word which does not contains = sign nor <space> and which is preceeded by a dot or a space (this dot or space will also be removed)
Code:
sed '/human/!d;s/[ .][^= ]*$//;s/.*name=/human\n/' yourfile | sort | uniq -c

Hi,

I have used this and fits almost perfectly. Only thing is that i dont want the total count of 'human' to be added in the output.
How do I change that?

thanks in advance.
# 12  
Old 10-21-2013
Like this ?
Code:
sed '/human/!d;s/.*name=//' file | sort | uniq -c

This User Gave Thanks to greet_sed For This Post:
# 13  
Old 10-21-2013
grep "human" infile | awk ' { for (i=1;i<=NF;i++)
if(($i) ~ /name=/) count[$i]++}
END { print "human = "NR;
for (a in count)
{ t=length(a)-6; print substr(a,6,t),"=",count[a]}}'
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search a string in a file and change another in the line

I did it myself (0 Replies)
Discussion started by: apenkov
0 Replies

2. UNIX for Dummies Questions & Answers

Search for a string,delete the line and replace with new string in a file

Hi Everyone, I have a requirement in ksh where i have a set of files in a directory. I need to search each and every file if a particular string is present in the file, delete that line and replace that line with another string expression in the same file. I am very new to unix. Kindly help... (10 Replies)
Discussion started by: Pradhikshan
10 Replies

3. Shell Programming and Scripting

Search string or words in logs without using Grep

I'm in need of some kind of script that will search for a string in each logfile in a directory but we don't want to use GREP. GREP seems to use up to much of our memory causing the server to use up a lot of swap space. Our log files are bigger than 500M on a daily basis. We lately started... (8 Replies)
Discussion started by: senormarquez
8 Replies

4. Shell Programming and Scripting

Search a string in a text file and add another string at the end of line

Dear All I am having a text file which is having more than 200 lines. EX: 001010122 12000 BIB 12000 11200 1200003 001010122 2000 AND 12000 11200 1200003 001010122 12000 KVB 12000 11200 1200003 In the above file i want to search for string KVB... (5 Replies)
Discussion started by: suryanarayana
5 Replies

5. Shell Programming and Scripting

Search a string in a text file and add another string at the particular position of a line

I am having a text file which is having more than 200 lines. EX: 001010122 12000 BIB 12000 11200 1200003 001010122 2000 AND 12000 11200 1200003 001010122 12000 KVB 12000 11200 1200003 In the above file i want to search for string KVB and add/replace... (1 Reply)
Discussion started by: suryanarayana
1 Replies

6. Shell Programming and Scripting

Search several string and convert into a single line for each search string using awk command AIX?.

I need to search the file using strings "Request Type" , " Request Method" , "Response Type" and by using result set find the xml tags and convert into a single line?. below are the scenarios. Cat test Nov 10, 2012 5:17:53 AM INFO: Request Type Line 1.... (5 Replies)
Discussion started by: laknar
5 Replies

7. Shell Programming and Scripting

List file's name and search string's Line

Hi all, My need is: To list out all the java / jsp files having System.out.println in my project. I need the output as: /home/me/project/file1.java somejavacode somejavacode System.out.println("something"); somejavacode somejavacode somejavacode /home/me/project/file2.java... (8 Replies)
Discussion started by: linuxadmin
8 Replies

8. UNIX for Dummies Questions & Answers

Search String in File List

Hi, I have a list of files which can be identified as abcd*.xml where * represent multiple timestamps for multiple files. I need to do following checks 1. Find number of files (which we get by doing following) FILECOUNT=`ls -ltr /dir/abcd*.xml | wc -l` 2. If check 1 gives '1' as... (2 Replies)
Discussion started by: dsrookie
2 Replies

9. Shell Programming and Scripting

search string in a file and retrieve 10 lines including string line

Hi Guys, I am trying to write a perl script to search a string "Name" in the file "FILE" and also want to create a new file and push the searched string Name line along with 10 lines following the same. can anyone of you please let me know how to go about it ? (8 Replies)
Discussion started by: sukrish
8 Replies

10. Shell Programming and Scripting

Perl: Search for string on line then search and replace text

Hi All, I have a file that I need to be able to find a pattern match on a line, search that line for a text pattern, and replace that text. An example of 4 lines in my file is: 1. MatchText_randomNumberOfText moreData ReplaceMe moreData 2. MatchText_randomNumberOfText moreData moreData... (4 Replies)
Discussion started by: Crypto
4 Replies
Login or Register to Ask a Question