Awk script in DOS and Linux behaves differently :(

 
Thread Tools Search this Thread
Special Forums Windows & DOS: Issues & Discussions Awk script in DOS and Linux behaves differently :(
# 1  
Old 03-31-2009
Awk script in DOS and Linux behaves differently :(

Hi,

I have an awk script which performs simple operations of variable assignments and finally printing the variables in custom form.

Code:
BEGIN {FS=OFS="\n"}
{
   v1=substr($0,1,15)
   v2=substr($0,16,200)
   v3=substr($0,216,20)
   print v1 "|" v2 "|" v3
}

The input file being processed is a fixed width file of record length=4346. The above script works perfectly as expected on Windows (using Windows Unix utilities). When I try to run the same script "as is" on Linux, I get the following error -
a.awk:7: ^ invalid char '' in expression"

I tried to debug the above script line by line and I find that the second line (assigning value to v2) is causing issues on Linux. Wondering, if are there any limitations of using substr to read $0 repeatedly has issues on Linux?

Kindly help.

Thanks and Regards,
Vidya

Last edited by Yogesh Sawant; 04-01-2009 at 02:47 PM.. Reason: added code tags
# 2  
Old 03-31-2009

That script runs without any problem on my Linux box.

My first thought was that perhaps you had carriage returns in the file, but that doesn't seem to affect the script. However, try removing any carriage returns as a first step; it can't hurt.

After that, check to see whether there are any other non-ASCII characters in the file.
# 3  
Old 04-01-2009
Thanks a lot. Instead of using Editplus to edit the file remotely, when I edited the file directly on Linux, it worked fine for me too. I guess, Editplus inserted some sort of carriage return when saved on Windows which would have caused the problem.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

'Connect' behaves differently on Solaris 11

Our application fails to run successfully on Solaris 11. The same works fine in Solaris 10. Due to which we are unable to migrate to Solaris 11. The app basically involves forking a child process, which finally connects with parent process. But on Solaris 11, it is unable to connect with parent... (0 Replies)
Discussion started by: wini008
0 Replies

2. Shell Programming and Scripting

awk treating variables differently in UNIX-Linux

Hi, awk seem to be acting differently in Unix and Linux when it comes to formatting. This is making it difficult to migrate scripts. for example: UNIX: echo "123" |awk '{printf ("%05s\n" ,$1)}' 00123 echo "123" |awk '{printf ("%05d\n" ,$1)}' 00123 echo "S12" |awk '{printf ("%05s\n"... (9 Replies)
Discussion started by: wanderingmind16
9 Replies

3. Shell Programming and Scripting

Why awk perform differently when using variable?

Hi Gurus, I hit a hard block in my script. when using awk command with variable, I got different result. Please see below: my test file as below: $ cat demofile.txt filename-yyyy-abcd filename-xxx-week-pass filename-xxx-week-run for testing purpose, I put 3 awk command in one script.... (7 Replies)
Discussion started by: ken6503
7 Replies

4. Shell Programming and Scripting

awk script modification - treat certain files differently

awk 'BEGIN{OFS=","} FNR == 1 {if (NR > 1) {print fn,fnr,nl} fn=FILENAME; fnr = 1; nl = 0} {fnr = FNR} /UNUSUAL/ && /\.gz/ ~ /FILENAME/ {nl++} <'{system ("gunzip -cd FILENAME")}' END ... (2 Replies)
Discussion started by: SkySmart
2 Replies

5. Shell Programming and Scripting

su - user -c 'command' behaves differently

I notice that su - user (note with dash) brings in more of the user's environment than does su - user -c 'command'. For example, if root does an su - user, and types "umask" to the prompt, one umask is displayed; yet, if instead the command is su - user -c 'umask', the value is different. I thought... (2 Replies)
Discussion started by: drokerm
2 Replies

6. Shell Programming and Scripting

Executing a script from CRON behaves differently than terminal

Hi have a script which transferers from Microsoft server to Linux box. The scripts(ksh) is on Linux box. If I run script from terminal, it transfers files to directory. Where as If I run script from CRON. It does not. Here is the log of both: Terminal execution log:... (2 Replies)
Discussion started by: dipeshvshah
2 Replies

7. AIX

Command behaves different in script and on prompt

$cat /tmp/tuxob.lst udi ***** jim 10 ant 19 ibm ***** $ input=`head -1 /tmp/tuxob.lst | awk '{print $NF}'` $ echo $input The output I am expecting is '*****'. But It is showing me the available files of current directory. When I run the command head -1 /tmp/tuxob.lst | awk '{print $NF} ... (3 Replies)
Discussion started by: panchpan
3 Replies

8. Shell Programming and Scripting

Building a script in Ubuntu (Linux) from existing DOS .cmd

Greetings, I would be very grateful to anyone who is willing to help and knows there scripting and how to convert a DOS CMD script. :) In this posting I am also hoping to pass on information to anyone wanting to see a bit of VMware command line stuff. I have made a script (batch file) that runs... (11 Replies)
Discussion started by: dp123
11 Replies

9. Shell Programming and Scripting

simple CSH Script behaves differently on Solaris and RedHat Linux

I have a simple csh-script on a Solaris Workstaion which invokes the bc calculator: #!/bin/csh set shz=2 set zshift=5 set shzp=`bc -l <<END \ scale = 3 \ -1. * $shz + $zshift \ END` echo $shzp The result ($shzp) in this case is 3 (-1*2+5). It works fine on Solaris 8. ... (2 Replies)
Discussion started by: two reelers
2 Replies

10. Shell Programming and Scripting

Script behaves different when run from cron vs. manually

Hey all, Just wanted to get some input on a script I am using to import files into a MySQL database. The process is pretty simple: my main server exports these files and FTPs them. I have a script that FTPs them to the machine running that runs this script. The FTP script runs without issue... (2 Replies)
Discussion started by: billtwild
2 Replies
Login or Register to Ask a Question