Sponsored Content
Homework and Emergencies Emergency UNIX and Linux Support Help to optimize script running time Post 302469147 by Corona688 on Thursday 4th of November 2010 10:09:04 PM
Old 11-04-2010
With an awk script that long it's hard to tell what you're doing.

If all you really want to do is count uses of the first column:

Code:
BEGIN { FS=";" }

{        if(length($0) > 0)
                count[$1]++;
}

END {
        for(keys in count)
                print keys ":" count[keys];
}

For your input data, this prints:
Code:
Zain500Disc:1
ZainEazy:1
ZainQuattro:1
Jaishana:1

---------- Post updated at 08:09 PM ---------- Previous update was at 07:48 PM ----------

It's hard to "optimize" huge amounts of logic since the slowdown may not be in one important place but in the logic itself. "optimizing" it means pretty much replacing it. Here I would use sort:

Code:
BEGIN { FS=";" ; count=1 ; cur=""; }

{
        if(length($0) > 0)
        {
                if(cur == $1)   count++;
                else
                {
                        if(length(cur) > 0)
                                print cur " had " count "\n";

                        cur=$1;         count=1;
                }

                print $0;
        }
}

END {   if(length(cur) > 0)     print cur " had " count "\n";   }

Code:
sort < input | awk -f count.awk

That way, you get your records already grouped and just have to count when things change.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

to compare latest logfile with the current running time of the script

how can i compare the latest log file with the current time.. consider i am running a script "a.sh" at 09:00 ( function of the script a.sh is to update the database ) this script is going to create logfile if the script is sucess in case of failure it is not going to create logfile.. ... (0 Replies)
Discussion started by: mail2sant
0 Replies

2. Shell Programming and Scripting

display time required to complete running script

hi is there any way i can display a countdown time needed to run a script? like load a counter at the beginning of the script with the estimated time and display the counter decrementing till it finishes running the script? (3 Replies)
Discussion started by: npatwardhan
3 Replies

3. Shell Programming and Scripting

Running batches of files at a time from a script

Hi I have a script that performs a process on a file. I want to know how to include a function to run a batch of files? Here is my script #!/bin/bash #---------------------------------------------------------------------------------------------------------------------- #This... (2 Replies)
Discussion started by: ladyAnne
2 Replies

4. Shell Programming and Scripting

Help in running a script after a particular time

Unix Gurus, I have a requirement where the shell script needs to do specific tasks after certain period of time. Daily we receive few files in a particular folder. The script does the file renaming, pass parameters to run some web services and pushes to remote FTP location. But my... (3 Replies)
Discussion started by: shankar1dada
3 Replies

5. Shell Programming and Scripting

How to know the exact running time of script!

Hi All, newbie here, I'm just wondering how can i know the exact running time of my script? Please advise, THanks, (1 Reply)
Discussion started by: nikki1200
1 Replies

6. Shell Programming and Scripting

Find the script running time and subtract from sleeptime

HI Guys, I want to find out the script running time and subtract from sleeptime. My Script Below Give me error :- #!/usr/bin/ksh timeout=100 start=$SECONDS sleep 20 end=$SECONDS echo "Time: $((end - start)) " ScTime = $((end - start)) (1 Reply)
Discussion started by: asavaliya
1 Replies

7. Shell Programming and Scripting

Setting time for running of the script

Dear all, I wonder if it is possible that we can run the script from time to time..I meant, it should repeat the sourcing of the script by itself? In my case, I need to source this script manually from time to time, like once in every 10 minutes. emily, (2 Replies)
Discussion started by: emily
2 Replies

8. Shell Programming and Scripting

Example of running script with time limits?

Hi, I want to write a script that does some sort of health check on the database. It will query the database for information, some query takes long and some are quick. For example, inside the script I will do something as below: #!/bin/ksh run_query_01 & run_query_02 &... (1 Reply)
Discussion started by: newbie_01
1 Replies

9. Shell Programming and Scripting

Kill long running script, if it crosses the threshold time

Hi, I need a script to kill the process if it running for long time. Inputs for the scripts: 1.test.sh (will be running fron cron scheduler) 2.1 hr (ie threshold_time - if the test.sh is running for more than 1 hr test.sh has to kill) Thanks, Divya (1 Reply)
Discussion started by: Divya Nochiyil
1 Replies

10. Shell Programming and Scripting

Killing the process if running for long time in script

I am running a script which will read the data from fail line by line and call the Java program by providing the arguments from the each line. The Java code is working fast for few records and for some records its getting hanged not providing response for morethan one hour. Currently am... (4 Replies)
Discussion started by: dineshaila
4 Replies
ac(8)							      System Manager's Manual							     ac(8)

NAME
ac - Outputs connect-session records SYNOPSIS
ac [-dp] [-w filename] [user(s) ...] FLAGS
Outputs the total connect time for each midnight-to-midnight period for which a wtmp file exists. When user(s) is specified, this flag lim- its the output to the login names specified by any user(s) parameter(s). Outputs the connect time total by individual login name of the user specified with the -p flag and the user(s) parameter. Omission of this flag permits a total only for the midnight-to-midnight time period for all logged in users to be produced. Specifies a wtmp file other than the /var/adm/wtmp file. The wtmp file you access for data may have been created automatically by some shell script administration command (for example, runacct) or manually by the system adminis- trator when the original /var/adm/wtmp file becomes too large. DESCRIPTION
The ac command prints to the default output device the total connect time in hours to the nearest hundredth for all users, or the connect time for any user(s) specified with the -p flag. It also prints the names of users specified by the user(s) parameter who have logged in during the life of the current /var/adm/wtmp file. Connect-time records are written by the init and the login programs and are collected in the /var/adm/wtmp file, when such a file exists. When a /var/adm/wtmp file does not exist, no connect-time accounting records are written; consequently, when connect-time records are wanted, the system administrator should create a /var/adm/wtmp file that has an initial record length of 0 (zero). Records in wtmp files (there may be more than one such file) should be processed periodically to keep the files from becoming too large. When you use the runacct command in a shell script, additional wtmp files can be automatically created whenever the current wtmp file becomes too large. You can output the contents of any of these other files when you specify the -w flag and the desired wtmp filename. The ac command is run independently with respect to any accounting shell procedure created or run by any of the acct/* shell procedures or runacct commands. EXAMPLES
To obtain an output of the total connect time for all users who have logged in during the life of the current wtmp data file, enter: /usr/sbin/ac To obtain an output of the total connect time for grossman and mcwhinney as recorded in the default wtmp data file, enter: /usr/sbin/ac grossman mcwhinney To obtain an output of the connect time subtotals for grossman and mcwhinney as recorded in the default wtmp data file, enter: /usr/sbin/ac -p grossman mcwhinney FILES
Specifies the command path. Is the active data file for the collection of connect-time records. RELATED INFORMATION
Commands: login(1), init(8) delim off ac(8)
All times are GMT -4. The time now is 07:11 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy