This is your version, cleaned up so it works, along with test results (test file shown below).
Personally, I'd just go with the following, which yields almost the same results, but which could easily altered to yield the exact same results, as what you had (after it was cleaned up), and it is much simpler to read:
# Looking for numbers with a '+' in front of of trailing them, as you might see in a mathematical expression), which matches the output you get in my cleaned up version of your code:
You did not state whether your input file contained 'statements' such as the above let statement but, if it does, your version will not find them because you are 'anchoring' your regular expression to the beginning and end of the line. Also, your version will not match numbers which contain trailing spaces, which I did not demonstrate in my example but which you can easily test yourself.
What went wrong with what your code? The answer is that the '+' is a metacharacter in regular expressions and it must be escaped with a backslash if you want to look for a literal plus sign. (The line just before the print statement in your code.)
According to the Posix regexp standards, + "Matches the preceding element one or more times."
fails because there is no preceding operand to match one or more times, just as there is none in your regexp ( "+" ).
and this:
does not fail but does not yield the desired results because, according to the Posix definition, '1' is matched one or more times and we are not looking for a literal '+'.
Other things that didn't go wrong yet because your script failed before it could reach them:
You are attempting to call grep and egrep from within your awk script but you cannot do that without using the awk system call, nor do you need to since awk understands regular expressions.
While it is syntactically correct, I'm not really sure why you are changing the awk field separator to a '+' sign and only applying your logic to 'non-blank' lines. With a properly structured regular expression, as the example above demonstrates, only the lines you are interested in are printed and none of that is required
Last edited by Franklin52; 05-17-2011 at 03:42 AM..
Reason: Please use code tags, thank you
dear friends,
I have a large size file containg two fields data
like this
*** ****
122 222
***** *****
***** *****
232 233
i have file like this.
i want to remove blank lines from file .
i think awk is servive this problem
i wrote a awk command but the error is... (3 Replies)
Dear friends,
I am writing shell script in csh .
i want to make arthimatic operation in csh.
i wrote sysntax like this.
set val = 230
set tmp = `0.1 * $val + 300`
echo $tmp
but it is not working .
anyone please give me syntax. (3 Replies)
Hi there
If i run this command on my Linux box directly, i get the desired result
# ipmitool fru | gawk '!NF{f=0}/mb.net0.fru/{f=1}/Product Serial/&&f{print $NF}'
00:AA:4F:A6:A6:C4
however, if i try to run it from a remote server (using SSH) and populating a variable with the result,... (5 Replies)
Hey guys, i am having a problem in my query statement. I am using Mysql in Netbeans and c++.
What i am trying to do is for the user to enter a certain value and then the program will store the value into the database...
string NewMovie ;
Cout <<" Enter your new movie : " << endl ;
... (1 Reply)
Hi Guys,
When below code is executed in script, I get desired output in output file.
awk 'NR >= $start_line && NR <= 3' master_scriptlist.txt > $driver1/scriptlist.txtBut when i replace 3 with a variable end_line=3, I do not get ouput. See code below. Is there any problem with syntax
awk... (6 Replies)
Hello,
I have perl script,which take some part of data in the file.
the below command works fine in normal cmd prompt.
`awk '/CDI/ && // && !/Result for/ {print $3 $5 > "final.txt"}' datalist.txt`;
`nawk -F"" '{print $2}' finalcdi.txt`;
But not working.
Please use code tags, thanks. (5 Replies)
I'm calling the following if-else from nawk. But I keep getting an error at the "else". I've tried putting more brackets and ; but still I get complaints about the "else".
Any ideas ?
Thanks,
wbrunc
BEGIN { FS = "," ; OFS = "," }
{ if ( $8 ~ /A/ && $9 == B )
$1="4/29/2013" ;
$2="J.Doe"... (2 Replies)
awk -v sw="lemons|dogs" 'NR>100 && NR<200 BEGIN { c=split(sw,a,""); } { for (w in a) { if ($0 ~ a) d]++; } }
END { for (i in a) { o=o (a"="(d]?d]:0)","); }
sub(",*$","",o); print o;
}' /home/jahitt/data.txt
what am i doing wrong with the above code? im pretty sure the issue is in the... (6 Replies)