Sponsored Content
Top Forums Shell Programming and Scripting dynamically change awk Field Separator FS Post 302346979 by satnamx on Monday 24th of August 2009 02:31:13 PM
Old 08-24-2009
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
datetimestamp=`date +"%Y%m%d%H%M%S"`
invalid_file=$2_$datetimestamp.dat
field_count=$3
file_delimeter=$4


#awk 'BEGIN{ FS="|"; } {
awk 'BEGIN{ FS=file_delimeter; } {
if ( NF != field_count ) {
invalid_rec_count+=1 ;
#
# print the header for the bad file once....then start printing the invalid records to the same file...
#
print $0 > invalid_file ;

}
else {
valid_rec_count+=1 ;
}
}
END { printf "%-10s\t\n%-10s\t\n%-10s\t\n","Total Lines Read ["NR"]","Valid Records Found ["valid_rec_count"]","Invalid Records Found ["invalid_rec_count"]" ;

if (invalid_rec_count>1) {
print " "
print "Please refer to file "invalid_file" for full invalid record set."
}
}
' invalid_file="$invalid_file" field_count="$field_count" file_delimiter="$file_delimeter" $source_file
}


so when I call it i would want to pass a 4th parameter like:

validate_source_file "$filenamedir" "$source_tabin_name" "$field_count" ","

or

validate_source_file "$filenamedir" "$source_tabin_name" "$field_count" "|"


Any ideas appreciated!

Regards
Satnam
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Change field separator of grep from : to space

Hi, All, I wonder how to change the field separator of grep from : to space when use grep to display. for example when I use grep -e 'pattern1' -e 'pattern2' -n filename to find patterns, it use : to separate patterns, but I want to use blank space. is there an option I can set to... (2 Replies)
Discussion started by: Jenny.palmy
2 Replies

2. 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

3. 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

4. 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

5. 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

6. UNIX for Dummies Questions & Answers

change field separator only from nth field until NF

Hi ! input: 111|222|333|aaa|bbb|ccc 999|888|777|nnn|kkk 444|666|555|eee|ttt|ooo|ppp With awk, I am trying to change the FS "|" to "; " only from the 4th field until the end (the number of fields vary between records). In order to get: 111|222|333|aaa; bbb; ccc 999|888|777|nnn; kkk... (1 Reply)
Discussion started by: beca123456
1 Replies

7. 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

8. 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

9. Shell Programming and Scripting

awk field separator help -

Hi Experts , file : - 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... (9 Replies)
Discussion started by: rveri
9 Replies

10. 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
form_field(3CURSES)					     Curses Library Functions					       form_field(3CURSES)

NAME
form_field, set_form_fields, form_fields, field_count, move_field - connect fields to forms SYNOPSIS
cc [ flag... ] file... -lform -lcurses [ library... ] #include <form.h> int set_form_fields(FORM *form, FIELD **field); FIELD **form_fields(FORM *form); int field_count(FORM *form); int move_field(FIELD *field, int frow, int fcol); DESCRIPTION
set_form_fields() changes the fields connected to form to fields. The original fields are disconnected. form_fields() returns a pointer to the field pointer array connected to form. field_count() returns the number of fields connected to form. move_field() moves the disconnected field to the location frow, fcol in the forms subwindow. RETURN VALUES
form_fields() returns NULL on error. field_count() returns -1 on error. set_form_fields() and move_field() return one of the following: E_OK The function returned successfully. E_CONNECTED The field is already connected to a form. E_SYSTEM_ERROR System error. E_BAD_ARGUMENT An argument is incorrect E_POSTED The form is posted. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |MT-Level |Unsafe | +-----------------------------+-----------------------------+ SEE ALSO
curses(3CURSES), forms(3CURSES), attributes(5) NOTES
The header <form.h> automatically includes the headers <eti.h> and <curses.h>. SunOS 5.11 31 Dec 1996 form_field(3CURSES)
All times are GMT -4. The time now is 02:06 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy