"next" and "gsub" in awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting "next" and "gsub" in awk
# 1  
Old 11-15-2006
Question "next" and "gsub" in awk

Yesteray I post a topic talking about log processing, thanks aigles for giving me the script, the first time I heard "next" and "gsub" function, so I decided to do some test work, but I failed, and don't know why

The logfile as follow, notice line 2 contains an username

*snip*
Nov 9 10:12:01 testfirewall root: [ID 702911 local5.info] 0:00:11 accept testfw01-hme0 >hme0 proto: icmp;
src: test001.example.net; dst: abc.dst.net; rule: 1; icmp-type: 8; icmp-code: 0; product: VPN-1 & Fire

Nov 9 10:12:54 testfirewall root: [ID 702911 local5.info] 0:23:54 accept testfw01-hme0 >hme0 proto: tcp; src: maa.example.net; dst: NYCMNYZRHN0.dst.net; service: cerent_1080; s_port: 1649; rule: 30; user: abc; len: 44; srcname: abc.example.net; product: VPN-1 & FireWall-1
*snip*

the request

"find16 column doesn't contain 192.1 or 192.2 or deve"

AND

"there is "user" keyword appears in the log"

AND

delete all the ";" character in the log

my though was like this

gawk 'BEGIN {OFS = "\t"} $16!~"192.(1|2)|deve" && $0~"user" {next} gsub(/;/,"") {print $0}' fw.log

But the script work incorrectly, and I noticed when I just use the first part of the awk program,

gawk 'BEGIN {OFS = "\t"} $16!~"192.(1|2)|deve" && $0~"user"' fw.log

there was no problem, every line match the criterion I defined, but when I add

" {next} gsub(/;/,"") " seemed awk process the logfile totally different, the output result even did not contain "user", I tried to delete "next", still same.

I tried comp.awk.faq, but no information related to "next" function.

So please give me some direction what's wrong with my script? and what exactly "next" do in awk. Thank you!
# 2  
Old 11-15-2006
A next statement causes the next input record to be read and pattern testing to restart with the first pattern {action} pair in the program.

The next statement in your awk program excludes all the lines thet you want to select.

Code:
awk '
       # Initialisation : set Output Field Separator to tabulation.
       BEGIN {
          OFS = "\t";  
       }
       # Select lines not containing "user" with field16 not  
       # containing 192.1 or 192.2 or "deve"
       $16!~/192.(1|2)|deve/ && $0~/user/ {
          gsub(/;/, "");     # Deletes all ";" in the current record
          print $0;          # Print current record
       }
    ' fw.log

Jean-Pierre.
# 3  
Old 11-15-2006
Quote:
Originally Posted by aigles
A next statement causes the next input record
when you say 'next input record', do that mean next input line?

Quote:
pattern testing to restart with the first pattern {action} pair in the program
I am sorry, I do not get you on this, could you give me a simple example?

Pardon me if this is a stupid question. Smilie

Last edited by fedora; 11-15-2006 at 03:42 PM..
# 4  
Old 11-15-2006
Yes in the normal case. If you have not modified the variable RS in your awk program, its default value is new line and hence a new record would mean "next line"

John Arackal
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

ps -ef | grep "string1" "string2" " "string3"

Hi all, can any one suggest me the script to grep multiple strings from ps -ef pls correct the below script . its not working/ i want to print OK if all the below process are running in my solaris system. else i want to print NOT OK. bash-3.00$ ps -ef | grep blu lscpusr 48 42 ... (11 Replies)
Discussion started by: steve2216
11 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question