Visit Our UNIX and Linux User Community


awk field separator help -


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk field separator help -
# 1  
Old 08-28-2013
awk field separator help -

Hi Experts ,


file :

Code:
[ Aug 19 21:02 apptime_flagECQAPP ] [ Aug 19 21:02 apptime_flagBWQAPP ] [ Aug 24 01:04 apptime_flagE2DAPP ]
[ Aug 24 01:43 apptime_flagECTAPP ] [ Aug 25 10:02 apptime_flagE2QAPP ] [ Aug 26 17:02 apptime_flagDELQAS ]
[ Aug 28 01:47 apptime_flagMOWSQ101 ] [ Aug 28 01:47 apptime_flagMOWSD101 ] [ Aug 28 01:47 apptime_flagMOWSQ102 ]
[ Aug 28 01:49 apptime_flagBWTAPP ] [ Aug 28 01:49 apptime_flagMOWSD001 ] [ Aug 28 01:49 apptime_flagMOWSQ002 ]

- How to construct the awk filed separator so that $1, $2 $3 , can be assigned to the each "[ ]" range.


I am trying : awk -F"[\[\]]" '{print $1}'
but it is printing the entire file. Not first field.




The desired output needed for first field is:

Code:
[ Aug 19 21:02 apptime_flagECQAPP ]       
[ Aug 24 01:43 apptime_flagECTAPP ]        
[ Aug 28 01:47 apptime_flagMOWSQ101 ]
[ Aug 28 01:49 apptime_flagBWTAPP ]


Thanks in advance.
# 2  
Old 08-28-2013
depending on how picky your awk is:
Code:
awk -F'(\\[)|(\\])' '{print "[" $2 "]" }' myFile

This User Gave Thanks to vgersh99 For This Post:
# 3  
Old 08-28-2013
Try the awk below...
Code:
awk -F" ]" '{print $1 FS $2 FS $3}' file

This User Gave Thanks to shamrock For This Post:
# 4  
Old 08-28-2013
awk is messy with [ ] characters. I'm on Solaris so awk/nawk is even messier

Try: tr piped into awk as a general approach. If this works with the ancient BSD /usr/bin/awk of Solaris it will work with modern ones, too.

Code:
tr -s '\[' ' ' < filename | tr -s '\]' '|' | awk -F'|' '{print $1}'

This User Gave Thanks to jim mcnamara For This Post:
# 5  
Old 08-28-2013
but then you loose the brakets in the output hehe... yep messy...
This User Gave Thanks to vbe For This Post:
# 6  
Old 08-28-2013
What about
Code:
 awk '{gsub ("\] \[", "];["); print $1}' FS=";" file
[ Aug 19 21:02 apptime_flagECQAPP ]
[ Aug 24 01:43 apptime_flagECTAPP ]
[ Aug 28 01:47 apptime_flagMOWSQ101 ]
[ Aug 28 01:49 apptime_flagBWTAPP ]

This User Gave Thanks to RudiC For This Post:
# 7  
Old 08-28-2013
GNU awk 4+:
Code:
awk '{ print $1 }' FPAT='[[][^]]+[]]' infile

Standard awk:
Code:
awk 'match($0, /[[][^]]+[]]/) {
      print substr($0, RSTART, RLENGTH)
      }' infile

If you need all the occurrences:
Code:
awk '{
  x = $0
  while (match(x, /[[][^]]+[]]/)) {
    data[++c] = substr(x, RSTART, RLENGTH)
    x = substr(x, RLENGTH + 1)
    }
  for (i = 0; ++i <= c;)
    print i, data[i]
  c = x  
      }' infile


Last edited by radoulov; 08-28-2013 at 02:58 PM..
These 2 Users Gave Thanks to radoulov For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #456
Difficulty: Easy
An application programming interface (API) is a graphical-based interface for viewing client-server data.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk field separator not working

Hi, can some some help to get me the right results, I have few text files, need to grep few columns from each file and get the results in one row with comma separated. my code is #folder=/nz/kit/log/backupsvr folder=/export/home/nz/valai/tmpfiles/ echo $folder for entry in `ls... (4 Replies)
Discussion started by: ValaiG
4 Replies

2. Shell Programming and Scripting

Field Separator in printf (awk)

I can not figure out how to set the Output filed separator in awk when using printf. Example: cat file some data here_is_more information Requested output some------------data her_is_more-----information Here are some that does not work: awk '{printf "%-15s %s\n",$1,$2}' OFS="-" file... (9 Replies)
Discussion started by: Jotne
9 Replies

3. Shell Programming and Scripting

awk field separator

I need to set awk field separator to ";", but I need to avoid ";EXT". so that echo a;b;c;EXTd;e;f | awk -F";" '{print $3}' would give "c;EXTd" (2 Replies)
Discussion started by: locoroco
2 Replies

4. UNIX for Dummies Questions & Answers

awk - output field separator

In awk, how do I print all fields with a specified output field separator? I have tried the following, which does not print the output FS: echo a b c d | awk 'BEGIN{OFS = ";"}{print $0}' (3 Replies)
Discussion started by: locoroco
3 Replies

5. Shell Programming and Scripting

awk - show field separator

I am using this code to insert something into a csv file: awk -F";" -v url=$url -v nr=$nr 'NR==nr{$2=url$2}1' file Why do I get the output field1 field2 instead of field1;field2 I have given -F";", so the field separator should surely be ";". (1 Reply)
Discussion started by: locoroco
1 Replies

6. Shell Programming and Scripting

awk, comma as field separator and text inside double quotes as a field.

Hi, all I need to get fields in a line that are separated by commas, some of the fields are enclosed with double quotes, and they are supposed to be treated as a single field even if there are commas inside the quotes. sample input: for this line, 5 fields are supposed to be extracted, they... (8 Replies)
Discussion started by: kevintse
8 Replies

7. Shell Programming and Scripting

awk (nawk) field separator

Hi; i have a file and i want to get; - If the last word in line 14 is NOT equal to "Set."; then print 2nd, 3rd, 4th and 5th values of 3rd line. and my code is: nawk 'NR==14 {if ($NF!="Set.") (NR==3{print $2,$3,$4,$5}) }' file.txt but no result?? :confused::(:confused::( (4 Replies)
Discussion started by: gc_sw
4 Replies

8. Shell Programming and Scripting

Field separator in awk

Hi I need to check if field separator I am using in awk statement is " : ", for example: TIME=12:59 HOUR=`echo "$TIME" | awk '{FS=":"; print $1}'` MINUTES=`echo "$TIME" | awk '{FS=":"; print $2}'` Is there a way to check within the above awk statement ? Thanks for help -A (2 Replies)
Discussion started by: aoussenko
2 Replies

9. Shell Programming and Scripting

dynamically change awk Field Separator FS

Hi All, I was wondering if anyone knew how to dynamically change the FS in awk to accept vairiable containing a field separator. the current code is as below and does not work when i introduce the dynamic FS change :-( validate_source_file() { source_file=$1 ... (2 Replies)
Discussion started by: satnamx
2 Replies

10. UNIX for Dummies Questions & Answers

Can't figure out what field separator to use in awk....

Hi Friends, Scripting newb here. So I'm trying to create a geektool script that uses awk and printf to output certain fields from top (namely command, cpu%, rsize, pid and time, in that order). Here's the input from the top process that I'm putting into awk: PID COMMAND %CPU ... (3 Replies)
Discussion started by: thom.mattson
3 Replies

Featured Tech Videos