- Community Home
- >
- Servers and Operating Systems
- >
- Operating Systems
- >
- Operating System - Linux
- >
- Grep in AWK
Categories
Company
Local Language
Forums
Discussions
Forums
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
Discussions
Discussions
Discussions
Discussions
Forums
Forums
Discussions
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Community
Resources
Forums
Blogs
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО02-09-2001 12:56 AM
тАО02-09-2001 12:56 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО02-09-2001 01:10 AM
тАО02-09-2001 01:10 AM
Re: Grep in AWK
Insite awk You can call system() function. In system You can run grep.
I'm not sure it good for You .
Why do You want to do ?
regards, Saa
- Tags:
- system
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО02-09-2001 01:19 AM
тАО02-09-2001 01:19 AM
Re: Grep in AWK
AWK has a very useful string search feature which could possibly make the use of external programs like grep useless.
If you want to use grep anyway, you can do it through the use of the system(cmd) call.
Best regards,
Dan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО02-09-2001 01:20 AM
тАО02-09-2001 01:20 AM
Re: Grep in AWK
So I want to awk the first file , get the fields and grep in the second file.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО02-09-2001 01:35 AM
тАО02-09-2001 01:35 AM
SolutionYou can use regular expressions in awk statements (instead of calling grep thru a 'system' call), like in this example:
$ echo "hello world" | awk '$1 ~ /[Hh]ello/ '{print $1}'
hello
knowing that $0 represents the entire string "hello world", which can be separated into multiple substrings (hello=$1, world=$2). Substrings are determined by delimiter specified by the -F flag of awk (space by default).
--
To retrieve each line of an input file, and do some processing afterwards (by splitting lines into multiple fields according to some patterns), you could issue:
# do some processing
cat myfile | awk 'BEGIN { while (getline) {
print $0
# do some further processing, knowing that each line is stored in $0
} # end while
}'
If you are used to Perl, then awk should'nt be a pb for you.
I would recommend the "sed & awk" book, from Dale Dougherty & Arnold Robbins, published by O'Reilly (ISBN 1-56592-225-5), which will show you all the powerful features of awk.
I hope this helps.
Bests,
Fred.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО02-09-2001 01:37 AM
тАО02-09-2001 01:37 AM
Re: Grep in AWK
So I need to use something similar to grep. isn't it ???
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО02-09-2001 01:41 AM
тАО02-09-2001 01:41 AM
Re: Grep in AWK
What you could do is something like that:
cat myfile | awk 'BEGIN { while (getline) {
print $0
# do some further processing, knowing that each line is stored
in $0
} # end while
}' | while read myvar
do
grep $myvar file2
done
This is quick and dirty, but this should do the trick.
Bests !
Fred.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО02-09-2001 02:00 AM
тАО02-09-2001 02:00 AM
Re: Grep in AWK
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО02-09-2001 02:21 AM
тАО02-09-2001 02:21 AM
Re: Grep in AWK
It's as Dan and Saandor told you:
system(cmd)
eg:
system ("mkdir test")
But be warned that the system function, as implemented in awk, does not make the output of the command available within the program for processing. " It returns the exit status of the command that was executed. The script waits for the command to finish before continuing execution". (excerpt of "sed & awk" book)
Hope this helps.
Regards,
Fred.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО02-12-2001 02:10 AM
тАО02-12-2001 02:10 AM
Re: Grep in AWK
#files a:
#-rwxr-xr-x 1 root sys 252 Dec 18 09:23 mboxhwint.sh
#drwxr-xr-x 2 root sys 96 Mar 31 1998 meminfo
#-rwxr-xr-x 1 root sys 238 Aug 10 2000 mkhwtext.sh
#-rw------- 1 root sys 1331 Dec 28 13:11 nohup.out
#-rwxr-xr-x 1 root sys 80 Aug 14 10:47 pp.bat
#-rw-r--r-- 1 root sys 4311 Dec 6 1999 swlist.txt
#drwxr-xr-x 3 root sys 96 Aug 25 1998 tscript
#-rw-rw-rw- 1 root sys 569 Nov 11 1999 whichchar.c
#
#file b:
#drwxr-xr-x 2 root sys 96 Mar 31 1998 meminfo
#drwxr-xr-x 3 root sys 2048 Jan 25 10:22 script
#dr-xr-xr-x 2 root sys 1024 Oct 10 1997 script.old
#drwxr-xr-x 3 root sys 96 Aug 25 1998 tscript
#
#
#Result:
#drwxr-xr-x 2 root sys 96 Mar 31 1998 meminfo
#drwxr-xr-x 3 root sys 96 Aug 25 1998 tscript
#!/usr/bin/sh
awk 'BEGIN{ while (getline < "b"){
ii++
patt=tolower( $NF)
f1[ii] = $NF
}
}
{
line=tolower( $0)
for( jj = i; jj <= ii; jj++) if( index( $0, f1[ jj])) {print $0; next}
}' a
succes
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО08-10-2006 08:04 PM
тАО08-10-2006 08:04 PM
Re: Grep in AWK
The same problem I am also encountered.
And I am also searching for the same solution.
the last solution you got seem to be a good one but it is not working for me and I could not able to understand
f1[ii] = $NF
If something worked for you then kindly post it to me.
Thanks advanced,
Regards,
Anantha Ganiga
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО08-11-2006 12:28 AM
тАО08-11-2006 12:28 AM
Re: Grep in AWK
the assignment of the arry elements should read as
f1[ii] = $NF
The whole script I would change to
- a pure awk script
- not ignoring case sensivity
- include some flexibility
file get_bs_of_a.awk:
#!/usr/bin/awk
BEGIN{ while (getline < "b") f1[++ii] = $NF}
found_in_a { mypatt=$0
for( j=1; jj <=ii; jj++) if(index(mypatt, f1[jj]) {print "in a: "$0,"in b: "f1[j]"}
execute as
get_bs_of_a.awk a
What is done:
In the BEGIN statement you once collect the content of file "b" in an array - i.e. the file you lookup for matching pattern of file "a" is processed only once. If you need only a part of the file or of a line, assign the required value only.
found_in_a
is your condition for matching lines of "a" you want to lookup in "b"; it could be something like
/mypattern/
$3 == "wow"
NF == 42
or you just leave it to get every line.
mypatt=
this selects the string you want to 'grep' for in "b";
mypatt=$0 searches the whole line
mypatt=$3"-"$4"-"$5" searches for '-'seperated values of field 3 to 5.
index function
if you do not need pattern for matching but a simple string, index() is your friend. If you need a regexp, use the match operator "~" or the match() function.
mfG Peter
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО09-05-2006 07:27 AM
тАО09-05-2006 07:27 AM
Re: Grep in AWK
if I am looking for a particular string in a field, I do the following.
This example looks at output from ONSTAT and prints output. In this example I filter out data prior to running it against AWK as it reduces processing time by doing so.
onstat -u |grep -v informix|grep -v total |awk '{print $9, $4, $5, $10, $11}' |sort -n |tail -10