- Community Home
- >
- Servers and Operating Systems
- >
- Operating Systems
- >
- Operating System - Linux
- >
- Re: 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
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