Need help with ksh

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help with ksh
# 1  
Old 01-16-2014
Need help with ksh

I have the following file:

one two three four
man women
yes no place togo
bad sleep

I need to move all lines that have only two words(columns) in a separate file and the rest in a separate file...

I used :
for $linecont in $(cat $filename); do
echo $linecont > temp
line1='cat temp|awk -F ' ' '{print $3;}'`
if [$line1 = ""] then
echo $linecont > file2
echo $linecont > file4

This did not work for me ...

Please help.

Last edited by Don Cragun; 01-16-2014 at 04:27 PM.. Reason: Add CODE tags.
# 2  
Old 01-16-2014

awk 'NF==2{print > "file2"; next}{print > "file4"}' $filename

Or using the shell:

while read line
   set -- $line
   if [ $# -eq 2 ]
      echo "$line" >> file2
      echo "$line" >> file4
done < $filename

Last edited by Chubler_XL; 01-16-2014 at 04:30 PM..
This User Gave Thanks to Chubler_XL For This Post:
# 3  
Old 01-16-2014
I think you can use below one to get required output.
awk '{if(NF==2) print $0}' <file_name>

awk '{if(NF!=2) print $0}' <file_name>


Last edited by Franklin52; 01-16-2014 at 04:39 PM.. Reason: Please use code tags, thanks
This User Gave Thanks to srikanth38 For This Post:
# 4  
Old 01-16-2014
Thanks Chubler_XL!
thanks Srikanth.

Any reason why my code did not work?
The reason why I used my method:
My goal is to create two files from file4:

select one from two;
select yes from no;

select three from four;
select place from togo;


Last edited by Scott; 01-16-2014 at 09:20 PM.. Reason: Code tags, please...
# 5  
Old 01-16-2014
There are quite a few issues with the your existing code.

Avoid using cat when commands accept a file name, or you can direct file straight to them. This didn't cause anything to fail to do what you wanted, but is poor form and wastes processing power invoking the cat executable.

echo $linecont > temp
This strips any multiple white space from output you should quote the line to protect spaces like echo "$linecont" > temp

if [$line1 = ""] then
You need to quote $line1 here otherwise if it's blank the file expression will complain about = "" is not valid syntax.

echo $linecont > file2
This will not append to the file and will just keep the list line found use ">>" to append but you must empty/remove any old files at start of your program.

Last edited by Chubler_XL; 01-16-2014 at 05:27 PM..
This User Gave Thanks to Chubler_XL For This Post:
# 6  
Old 01-16-2014

Could you please read you file using while loop, below code is working.

while read linecont
line1=`echo $linecont|awk -F ' ' '{print $3;}'`
if [ "$line1" = "" ] 
echo $linecont >> file2
echo $linecont >> file4

Moderator's Comments:
Mod Comment Code tags for code, please.

This User Gave Thanks to srikanth38 For This Post:
# 7  
Old 01-16-2014
Thanks for your reply:
when I used your notation:
awk 'NF==2{print > $file1; next}{print > $file2}' $filename

it does not work with file variables, what I do wrong?

Last edited by Scott; 01-16-2014 at 09:21 PM.. Reason: Code tags
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting


Hi Dears kindly I am new here ...I want to ask your help ... I want to write AWK command when enter date like 20140129 plus 9 then it gives me 20140207 I wrote below but the result was wrong #!/bin/ksh echo "please input the data:" read a if echo $a|awk '{if... (15 Replies)
Discussion started by: shaho87
15 Replies

2. Shell Programming and Scripting

ksh help

Hi, I have command like this with ooutput : unix>tnsping abc TNS Ping Utility for IBM/AIX RISC System/6000: Version - Production on 17-AUG-2011 17:06:11 Copyright (c) 1997, 2007, Oracle. All rights reserved. Used parameter files: /opt/oracle/network/admin/sqlnet.ora ... (19 Replies)
Discussion started by: talashil
19 Replies

3. Shell Programming and Scripting

different behaviour for ksh and ksh -x

I'm getting different behaviour when executing below script in debug option. $ cat ss.ksh ff=$(pwd) echo " ff : $ff" $ ksh ss.ksh ff : /tmp $ ksh -x ss.ksh + + pwd ff= + echo ff : ff : I was getting this behaviour in my actuall script i'm able to reproduce this in simple script... (4 Replies)
Discussion started by: luckybalaji
4 Replies

4. UNIX for Dummies Questions & Answers

Difference Between executing llike ./myscript.ksh and . ./myscript.ksh

Hi , What is the diffence between executing the script like ./myscript.ksh . ./myscript.ksh I have found 2 difference but could not find the reason 1. If i export a variable in myscript.ksh and execute it like . ./myscript.ksh the i can access the other scripts that are present in... (5 Replies)
Discussion started by: max_hammer
5 Replies

5. Shell Programming and Scripting

KSH script to run other ksh scripts and output it to a file and/or email

Hi I am new to this Scripting process and would like to know How can i write a ksh script that will call other ksh scripts and write the output to a file and/or email. For example ------- Script ABC ------- a.ksh b.ksh c.ksh I need to call all three scripts execute them and... (2 Replies)
Discussion started by: pacifican
2 Replies

6. Shell Programming and Scripting

Need help on ksh

1. Script using bash #!/bin/bash a=4294967296 (( b=$a / 2 )) echo "$a" echo "$b" *** output *** 4294967296 2147483648 2. Script using ksh #!/bin/ksh a=4294967296 (( b=$a / 2 )) echo "$a" echo "$b" *** output *** 4294967296 (3 Replies)
Discussion started by: gautam.shrestha
3 Replies

7. Shell Programming and Scripting

Help with KSH

Hi, I need some help with the Ksh scripting.... I have a Script call Mail.ksh which calls Crank.ksh which calls Readdates.ksh whoch calls mindiff.ksh the output of mindiff.ksh and Readdates.ksh are wirtten to a text file... Here is how each file is called or executed... ./Mail.ksh 30... (3 Replies)
Discussion started by: bhagya2340
3 Replies

8. Shell Programming and Scripting

import var and function from ksh script to another ksh script

Ih all, i have multiples ksh scripts for crontab's unix jobs they all have same variables declarations and some similar functions i would have a only single script file to declare my variables, like: var1= "aaa" var2= "bbb" var3= "ccc" ... function ab { ...} function bc { ... }... (2 Replies)
Discussion started by: wolfhurt
2 Replies

9. Shell Programming and Scripting

tracing a ksh script within a ksh script

I normally trace a script with the ksh -x <script name> and redirect strderr to file. But if you have a script like the examble below...... vi hairy bear=`grep bear animals` if then ksh more_animals fi If I ksh -x hairy it won't trace "more_animals" unless I put a -x in it. Is... (1 Reply)
Discussion started by: shorty
1 Replies

10. Shell Programming and Scripting

executing a ksh script from another ksh script

Hi, I'm new to unix scripting.How can i call a script from another script. I have a.ksh and b.ksh .I have to call b.ksh from a.ksh after it is successfully exceuted. I tried using #!/bin/ksh -x in a.ksh and at the end i have used /path/b.ksh My problem is it is executing only (6 Replies)
Discussion started by: ammu
6 Replies
Login or Register to Ask a Question

Featured Tech Videos