awk in ksh


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk in ksh
# 1  
Old 03-15-2010
awk in ksh

Hi all,

I have .ksh script, which is doing different things like creating output files, renaming them, sending them via ftp and save a backup of the files on the application server. Now I'd like to edit this file to be able to split the incoming file into 4 different files. Therefor the database pkg creating the content of the file adds prefixes to every single line. So the file looks like:

BDDandsomedifferentinformation
BDTandalsosomeinformation
BNDandsomeotherinformation
BADandagainsomeinformation

Tried to manually split that file with awk and it works fine:

Code:
awk '{close(f);f=$1}{print > f".txt"}' BHD000000744.TXT.3292214

But when I want to have this in the .ksh, I do not get any result?! It looks like it is doing nothing. Tried it that way:

Code:
if [[ ${_ftpfile} = @(BHD*) ]]; then
  awk '{close(f);f=$1}{print > f".txt"}' $_ftpfile
fi

$_ftpfile is the filename of the file which should be split, and the if checks if the filename starts with BHD, which also works, but as i said, not within the existing .ksh.

Any idea what the reason for that can be? Appreciate any help, thanks!

Mike
# 2  
Old 03-15-2010
put "set -x" before the if statement and post the output please.

Code:
set -x

if [[ ${_ftpfile} = @(BHD*) ]]; then
  awk '{close(f);f=$1}{print > f".txt"}' $_ftpfile
fi

set +x

# 3  
Old 03-16-2010
Sorry, but set -x does what?
The loop is in a .ksh script which is called from out an application with different parameters, and there is e.g. a file (variable $_dbgfile) which is used, to log the output.

I'm pretty new in this, so thanks for your patience Smilie

---------- Post updated at 11:14 AM ---------- Previous update was at 09:09 AM ----------

ok, figured it out, so here's the output:

+ [[ BHD000000813.TXT = @(BHD*) ]]
+ awk {close(f);f=$1}{print > f".txt"} BHD000000813.TXT
+ echo Split file in
+ 1>> ./../log/CSW_OUT_ORDERS.3292291.dbg
+ ./awk.ksh BHD000000813.TXT


I've tried to call awk in a seperate .ksh file, as it did not work, so thats why there's s seberate line at the end for that.

Code:
set -x
if [[ ${_ftpfile} = @(BHD*) ]]; then
  awk '{close(f);f=$1}{print > f".txt"}' $_ftpfile
  #/appl/spider/if/SME/csw/script/awk.ksh $_ftpfile
  echo "Split file in " >> $_dbgfile
  ./awk.ksh $_ftpfile
fi
set +x

# 4  
Old 03-16-2010
The only thing I see different in your original post and the output you just posted is the filenames:

original: BHD000000744.TXT.3292214
output: BHD000000813.TXT

Can you put a sample of the file you want parsed on here and show what files you want it broken into and what the names and contents of each should look like as they relate to the sample file?

Thanks.
# 5  
Old 03-16-2010
The filename is different, cause I tried to awk manually on a file which was already transferred via ftp, which we mark with a suffix of the process id then.

Data is just dummy date, and files really look like:

BDD000000821 00000681 RD00000681 103000 1 01934110012-63 TEST2 11-FEB-110 10 1 000 SHIPPING
BDD000000821 00000681 RD00000681 103000 1 01934110012-63 TEST2 11-FEB-110 10 1 000 SHIPPING
BND000000821 000006831916000006831916BILL OF REMARKSALLOVERANDOVER
BND000000821 000006831918000006831918BILL OF LAADSFASDFASFDASDF#ADFADSF
BAD000000821 00000681 00000681 103000 BESTBEST #123 1234 SOMEWHERE
BAD000000821 00000681 00000681 419000 ALLTBEST #456 1234 SOMEWHERE

Funny thing is, that if I start the ksh script manually, which calls a script awk.ksh (see below) to do the split, then it works great. Starting the process from out the application, does nothing ...

Code:
#!/usr/bin/ksh
_file_name=$1
awk '{close(f);f=$1}{print > f".txt"}' $_file_name
echo "awk has been called" >> tmp.log



---------- Post updated at 03:41 PM ---------- Previous update was at 01:58 PM ----------

The problem is sovled now ... due to the startup in the application, it was simply a completely different working directory which I did not check Smilie

Files are there, now the next question:

Is there any way, to put the files from the awk into variables in the ksh?

Code:
awk '{close(f);f=$1}{print > f".txt"}' $_ftpfile

means, the .txt files, as many as there are generated, into file1, file2, ... variables
# 6  
Old 03-16-2010
You can do the job with one command IMHO:
Code:
awk '{close(f);f=$1}{print > f".txt"}' BHD*

# 7  
Old 03-16-2010
Maybe some missunderstanding ... $_ftpfile is the file which is split into 2 or more files, and print > f".txt" is writing the filenames, right?

So I want this filenams in variables, so that finally $_ftpfile has been split and is in variables $_ftpfile1, $_ftpfile2, ...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using awk command in ksh

I am trying to use awk command withing ksh. ksh "echo \"my name\" | awk '{print $2}'" I am getting out as : my name Expected output: name When I use echo "my name" | awk '{print $2}' I am getting the correct output: name I am not sure what mistake I am doing when using awk... (1 Reply)
Discussion started by: Bala_db2
1 Replies

2. Shell Programming and Scripting

Formatting output using awk in ksh

:oi was trying to write a script to format output of a command in ksh which has output as below: so i used : to get which i require at all times. But problem occurs when status part changes. above output i get when status is SU (success).If the status is IN (inactive), output of... (1 Reply)
Discussion started by: pr5439
1 Replies

3. Shell Programming and Scripting

ksh passing to awk multiple dyanamic variables awk -v

Using ksh to call a function which has awk script embedded. It parses a long two element list file, filled with text numbers (I want column 2, beginning no sooner than line 45, that's the only known thing) . It's unknown where to start or end the data collection, dynamic variables will be used. ... (1 Reply)
Discussion started by: highnthemnts
1 Replies

4. Shell Programming and Scripting

G/AWK and ksh troubles

Alright, so I've been banging my head against the wall for the past 7 hours trying to figure this out :wall:. What I'm trying to do is "unwrap" periodic coordinates from a molecular simulation to put them back in their unit cell box. I've accomplished that little bit of magic easily enough, but... (6 Replies)
Discussion started by: DEC014
6 Replies

5. Shell Programming and Scripting

awk or nawk in ksh

I am trying to use either awk or nawk in ksh88 to grep the word "Reason" in multiple files and than print the lines that say "Reason" in a particular format that is different from how they would normally print. The original input is as follows: ... (10 Replies)
Discussion started by: ther2000
10 Replies

6. Shell Programming and Scripting

for loop in awk script using ksh

Guys, I am new in awk , I face problem while i try to use for loop in awk, I am using ksh, i am trying to set a for loop which runs as man times as the records in a file , the for loop like for(a=1;a<=5;a++) is working in my awk script but the one i need is not working :wall: for example ... (8 Replies)
Discussion started by: djahmed
8 Replies

7. Shell Programming and Scripting

KSH AWK

Hello, How can i use awk '{print substr($1...... is order to grep a parameter from the first time i encounter a specific characther. I.e ABC=ahaakl/123456/ksksk i want to grep only 123456 (It must be using awk substr) thanks. (3 Replies)
Discussion started by: LiorAmitai
3 Replies

8. Shell Programming and Scripting

KSH and AWK

Howdy, I'm new to awk and am writing scripts primarily in ksh. What I'm trying to do is use awk to go through a list which contains multiple fields and four columns. I need awk to find and print a couple of columns that contain the lowest value. e.g. Jim ABC xyz 12.5 Jack ... (3 Replies)
Discussion started by: drumminfool91
3 Replies

9. Shell Programming and Scripting

Using AWK in IF evaluation in KSH

Hi - I have an expression that evaluates to "Alive" or some other condition. e.g. if I run :- awk -F \| '{gsub(/]*/,"",$4); print $4 }' then the output is "Alive". I want to be able to test this as the result may be some other condition other than "Alive". I have tried the following... (4 Replies)
Discussion started by: sniper57
4 Replies

10. Shell Programming and Scripting

ksh and awk interaction

in a ksh script, i want to process some string variables using awk, and then i want to go on using this variables in the same ksh (out of awk lines) can anybody send me a very simple example about this? (0 Replies)
Discussion started by: gfhgfnhhn
0 Replies
Login or Register to Ask a Question