Awk with mutliple filed separators


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Awk with mutliple filed separators
# 1  
Old 10-25-2012
Awk with mutliple filed separators

I try to trim a FTP log using awk, but the escape sequences does not work the way I want it.

Input data
Code:
[3] Wed 3Oct10 21:48:00 - (002117) Sent file d:\ftp\home\tools\htmake.rar successfully (48.2 kB/sec - 40997 Bytes)
[3] Wed 3Oct10 22:25:46 - (002118) Sent file d:\ftp\files\main\oct\camera1 picture(10.12).rar successfully (36.9 kB/sec - 53041 Bytes)

Desired output
Code:
htmake.rar
camera1 picture(10.12).rar

I like the file name only.

My test ends up like this
Code:
root@server:/tmp# cat FTP_0310.txt | awk -F"\\| success" '/Sent/ { print $(NF-1) }'
awk: warning: escape sequence `\|' treated as plain `|'

I see that my name are between \ and success
awk does support multiple filed separators using the |
So I escape the first \ by enter
but for some reason it does it the wrong way around when enter \\|
I did then try \\\| but does not work
# 2  
Old 10-25-2012
Code:
awk -F' success' '/Sent/{sub(/.*\\/,"",$1);print $1}' file


Last edited by elixir_sinari; 10-25-2012 at 05:50 AM..
This User Gave Thanks to elixir_sinari For This Post:
# 3  
Old 10-25-2012
Try:
Code:
awk -F'\\\\| success' '/Sent/ { print $(NF-1) }' infile

The problem was the use of double quotes (instead of single quotes), which does not shield the \ from interpretation by the shell.
These 2 Users Gave Thanks to Scrutinizer For This Post:
# 4  
Old 10-25-2012
Both does work, thanks.
@elixir_sinari
your soultion did miss the argument, but works fine EDIT: I do see you fixed it Smilie
Code:
awk -F' success' '/Sent/{sub(/.*\\/,"",$1);print $1}' file

@Scrutinizer
I thought when using single quote, it did not eval the value within, so it would give one single separator with the name \\\\| success
# 5  
Old 10-25-2012
@jotne, the single quotes shields evalutation by the shell. What remains is first evaluated by awk as a string \\\\| success and subsequently as an extended regular expression, in this case \\| success. It is evaluated as a string first by awk, because the field separator definition is not (and cannot be) enclosed in slashes (/).

Last edited by Scrutinizer; 10-25-2012 at 06:24 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk based on first 5 filed of column

Dear Team, I need support to use awk program to grep data based on matching pattern first 5 digits "96656" . Data I have as below 466565996656,820012906026651 NA NOTMATCHED 4661740045165,820011902196656 NA NOTMATCHED 4661740085225,820011900196656 NA NOTMATCHED... (4 Replies)
Discussion started by: shanul karim
4 Replies

2. Shell Programming and Scripting

awk multiple filed separators

There is an usual ifconfig output vlan30 Link encap:Ethernet HWaddr inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: 2407:4c00:0:1:aaff::1/64 Scope:Global inet6 addr: fe80::224:e8ff:fe6b:cc4f/64 Scope:Link UP BROADCAST... (1 Reply)
Discussion started by: urello
1 Replies

3. Shell Programming and Scripting

awk multiple fields separators

Can you please help me with this .... Input File share "FTPTransfer" "/v31_fs01/root/FTP-Transfer" umask=022 maxusr=4294967295 netbios=NJ09FIL530 share "Test" "/v31_fs01/root/Test" umask=022 maxusr=4294967295 netbios=NJ09FIL530 share "ENR California" "/v31_fs01/root/ENR California"... (14 Replies)
Discussion started by: greycells
14 Replies

4. UNIX for Dummies Questions & Answers

Can one use 2 field separators in awk?

I have files such as n02-z30-dsr65-terr0.25-dc0.008-16x12drw-run1.cmd I am wondering if it is possible to define two field separators "-" and "." for these strings so that $7 is run1. (5 Replies)
Discussion started by: kristinu
5 Replies

5. UNIX Desktop Questions & Answers

awk Varing Field Separators

Hi Guys, I have small dilemma which I could do with a little help solving . I currently have text HDD S.M.A.R.T report which I have pasted below: smartctl 5.39 2008-10-24 22:33 (openSUSE RPM) Copyright (C) 2002-8 by Bruce Allen, http://smartmontools.sourceforge.net Device: COMPAQ... (2 Replies)
Discussion started by: bikerben
2 Replies

6. Shell Programming and Scripting

how to use two separators in awk.

Hi, Gurus, I have a file like 1 234, 345, 456 2 345, 456, 345 I want to use awk with multipe separator ( one is comma, another is space)print out $1, $3 which should be: 1, 345 2, 456 but I don't know how to put space as separator with another separator. Thanks in advance (7 Replies)
Discussion started by: ken002
7 Replies

7. Shell Programming and Scripting

AWK multiple fields separators

I need to print the second field of a file, taking spaces, tab and = as field separators. ; for 16-bit app support MAPI=1 CMC=1 CMCDLLNAME32=mapi32.dll CMCDLLNAME=mapi.dll MAPIX=1 MAPIXVER=1.0.0.1 OLEMessaging=1 asf=MPEGVideo asx=MPEGVideo ivf=MPEGVideo m3u=MPEGVideo (2 Replies)
Discussion started by: PamPam
2 Replies

8. Shell Programming and Scripting

Multiple input field Separators in awk.

I saw a couple of posts here referencing how to handle more than one input field separator in awk. I figured I would share how I (just!) figured out how to turn this line in a logfile: 90000000000000000000010001 name... (4 Replies)
Discussion started by: kinksville
4 Replies

9. Shell Programming and Scripting

Filed substitution with awk

guys, I'm trying to 9k lines of the following: aaa aaa 1 1 1 to aaa aaa 1 01 1 Im pretty ignorant when it comes to subtituting fields using awk any help ? Tony (1 Reply)
Discussion started by: tony3101
1 Replies

10. Shell Programming and Scripting

Awk Multiple Field Separators

Hi Guys, I'm tying to split a line similar to this:YO6-2000-30.htm: (3 properties found).......into separate columns, so effectively I need to check for a -, ., :, a tab and a space in the statement. Any help would be appreciated Thanks! (7 Replies)
Discussion started by: Tonka52
7 Replies
Login or Register to Ask a Question