08-01-2012
Looks like the extra double-quote is after exit 1}.
I would suggest that you pass values from the shell on the command line, instead of expanding them within the AWK code. This would allow the use of stronger single-quotes, avoiding the clumsy and error-prone double-quote escaping, embedded shell parameter expansions, and would also protect the AWK script from characters in the shell variables' values which have special meaning to AWK.
Regards,
Alister
Last edited by alister; 08-01-2012 at 02:15 PM..
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Hi Friends
How do I do two things from one if statement inside awk? I want to run a script and create a new file from the same condition.
awk '{ if ($2 == ""){print " "|"cd /local/test; ./script.ksh"}{cat > ran_true.txt}}' $IN_FILE
Bolded are the two things I want to be done.
Thanks (1 Reply)
Discussion started by: UNovIX
1 Replies
2. Shell Programming and Scripting
hi all,
i have two files
1) a.txt
one
two
three
2)
abc "one" = 10
pqr "three" = 20
345 "two" = 0
this is what i want in third file (3 Replies)
Discussion started by: shishirkotkar
3 Replies
3. Shell Programming and Scripting
Having a little trouble with awk and an if statement. I have a test setup which I am trying to only print the records which start with the month 03. Everything I tried, prints everything, even the 02 month
03/23/2010 12:47:51
ga2828
SUBMITTED FROM URL: test123.cgi
show port count
... (2 Replies)
Discussion started by: numele
2 Replies
4. Shell Programming and Scripting
Hello all,
I'm very new to this (<5hrs!) please bear with me. My file looks like this
386259.448541 417069.155 154935.157 186.206 162 1 1 8
386259.448551 417068.53 154935.04 186.144 156 1 1 8
386259.448561 417067.911 154934.926 186.175 164 1 1 8
386259.450337 417086.643 154946.483 894.671... (4 Replies)
Discussion started by: rebeccab37
4 Replies
5. Shell Programming and Scripting
Hi everyone,
Please help on this:
I have file1:
<file title="Title 1 and 2">
<report>
<title>Title 1</title>
<number>No. 1234</number>
<address>Address 1</address>
<date>October 07, 2009</date>
<description>Some text</description>
</report>
... (6 Replies)
Discussion started by: Ophiuchus
6 Replies
6. Shell Programming and Scripting
os: sunos/linux
shell: bash
awk -v PCT="$PERCENTAGE" -v UWARN="$UWARNING" -v UCRIT="$UCRITICAL" 'BEGIN {
PCT=PCT+0; UWARN=UWARN+0; UCRIT=UCRIT+0 ;
if(PCT<UWARN) { printf \" '${FILESYS}':... (3 Replies)
Discussion started by: SkySmart
3 Replies
7. Shell Programming and Scripting
Hi
I have a file with
test test2 1000000657373
test1 test3 1000003849450
test2 test4 test5 100000837474
I cat the file and pipe it to an awk statement like so
cat /tmp/file |awk '{if ($3 ~ "^*$" && $3 > 1024000000) print "/vol/"$1"/"$2;else if ($4 ~ "^*$" && $4 > 1024000000) print... (15 Replies)
Discussion started by: bombcan
15 Replies
8. Shell Programming and Scripting
I am using awk as part of and if then else statement. I am trying to have the user enter a gene name and then a variant or variants and have a specific transcript assigned to the variants depending on the gene. Below is my code but the if then else statement is wrong. Basically, the gene name... (2 Replies)
Discussion started by: cmccabe
2 Replies
9. Shell Programming and Scripting
Hi folks,
I have a scenario to convert the update statements into insert statements using shell script (awk, sed...) or in database using regex.
I have a bunch of update statements with all columns in a file which I need to convert into insert statements.
UPDATE TABLE_A SET COL1=1 WHERE... (0 Replies)
Discussion started by: dev123
0 Replies
10. Shell Programming and Scripting
can someone please help me spot and fix the issue with the following code:
awk -F, -v SEARCHPATT="(Wed|Tue)" -v ADDISTR="Mon|Tue|Wed|Thu|Fri|Sat|Sun" -vVF="$VALFOUND"
"BEGIN{ {D = D = 1
D = D = 2
}
$0 ~ "," VF "," {L = 1 ... (9 Replies)
Discussion started by: SkySmart
9 Replies
LEARN ABOUT FREEBSD
openpam_readword
OPENPAM_READWORD(3) BSD Library Functions Manual OPENPAM_READWORD(3)
NAME
openpam_readword -- read a word from a file, respecting shell quoting rules
LIBRARY
Pluggable Authentication Module Library (libpam, -lpam)
SYNOPSIS
#include <sys/types.h>
#include <stdio.h>
#include <security/pam_appl.h>
#include <security/openpam.h>
char *
openpam_readword(FILE *f, int *lineno, size_t *lenp);
DESCRIPTION
The openpam_readword() function reads the next word from a file, and returns it in a NUL-terminated buffer allocated with malloc(3).
A word is a sequence of non-whitespace characters. However, whitespace characters can be included in a word if quoted or escaped according
to the following rules:
o An unescaped single or double quote introduces a quoted string, which ends when the same quote character is encountered a second time.
The quotes themselves are stripped.
o Within a single- or double-quoted string, all whitespace characters, including the newline character, are preserved as-is.
o Outside a quoted string, a backslash escapes the next character, which is preserved as-is, unless that character is a newline, in which
case it is discarded and reading continues at the beginning of the next line as if the backslash and newline had not been there. In all
cases, the backslash itself is discarded.
o Within a single-quoted string, double quotes and backslashes are preserved as-is.
o Within a double-quoted string, a single quote is preserved as-is, and a backslash is preserved as-is unless used to escape a double
quote.
In addition, if the first non-whitespace character on the line is a hash character (#), the rest of the line is discarded. If a hash charac-
ter occurs within a word, however, it is preserved as-is. A backslash at the end of a comment does cause line continuation.
If lineno is not NULL, the integer variable it points to is incremented every time a quoted or escaped newline character is read.
If lenp is not NULL, the length of the word (after quotes and backslashes have been removed) is stored in the variable it points to.
RETURN VALUES
If successful, the openpam_readword() function returns a pointer to a dynamically allocated NUL-terminated string containing the first word
encountered on the line.
The caller is responsible for releasing the returned buffer by passing it to free(3).
If openpam_readword() reaches the end of the line or file before any characters are copied to the word, it returns NULL. In the former case,
the newline is pushed back to the file.
If openpam_readword() reaches the end of the file while a quote or backslash escape is in effect, it sets errno to EINVAL and returns NULL.
IMPLEMENTATION NOTES
The parsing rules are intended to be equivalent to the normal POSIX shell quoting rules. Any discrepancy is a bug and should be reported to
the author along with sample input that can be used to reproduce the error.
SEE ALSO
openpam_readline(3), openpam_readlinev(3), pam(3)
STANDARDS
The openpam_readword() function is an OpenPAM extension.
AUTHORS
The openpam_readword() function and this manual page were developed by Dag-Erling Smorgrav <des@des.no>.
BSD
September 12, 2014 BSD