Sponsored Content
Full Discussion: Improving code
Top Forums Shell Programming and Scripting Improving code Post 302991069 by Corona688 on Monday 6th of February 2017 11:04:03 AM
Old 02-06-2017
I'll cut to the chase and be a bit more generous -- you are reprocessing your input files over, and over, and over, and over, and over, and over, and over, when you could have done so just once or twice.

Your code is too big a mess to replace wholesale, especially since we know nothing about your input, but 'filter by conditions' is particularly egregious. You are allowed to put more than one statement in an awk program! You could have done 5 times as much work at once. Here is pseudocode.

Code:
read vpff vpds4a vpds4b vpds4 vpdsss <<EOF
$( awk '
        awk-range1 { count1++ }
        awk-range2 { count2++ }
        awk-range3 { count3++ }
        awk-range4 { count4++ }
        awk-range5 { count5++ }
        END { print count1+0, count2+0, count3+0, count4+0, count5+0; }' tmp4 )
EOF

The idea is to have awk print a line like "5 7 3 9 12" which gets dumped into read and split among its variables.
This User Gave Thanks to Corona688 For This Post:
 

6 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

improving my script

Hi; I want to access our customer database to retreive all clients that have as language index 2 or 3 and take their client number. My input is a file containing all client numbers. i access the data base using a function call "scpshow". The total number of clients i want to scan is 400 000... (6 Replies)
Discussion started by: bcheaib
6 Replies

2. UNIX for Dummies Questions & Answers

Improving Unix Skills

Kindly any advice to improve my unix skills as electronic books i can download or valuable sites as this one etc... (3 Replies)
Discussion started by: sak900354
3 Replies

3. Shell Programming and Scripting

Improving this validate function

Hi guys, I use this function which was provided to me by someone at this site. It works perfectly for validating a users input option against allowed options.. example: validateInput "1" "1 3 4 5" would return 0 (success) function validateInput { input=$1 allowedInput=$2 for... (4 Replies)
Discussion started by: pyscho
4 Replies

4. Shell Programming and Scripting

Improving code by using associative arrays

I have the following code, and I am changing it to #!/bin/bash hasArgumentCModInfile=0 hasArgumentSrcsInfile=0 hasArgumentRcvsInfile=0 OLDIFS="$IFS" IFS="|=" # IFS controls splitting. Split on "|" and "=", not whitespace. set -- $* # Set the positional... (3 Replies)
Discussion started by: kristinu
3 Replies

5. Shell Programming and Scripting

Basic help improving for in loop

I'm obviously very new to this. I'm trying to write a simple for loop that will read the directory names in /Users and then copy a file into the same subdir in each user directory. I have this, and it works but it isn't great. #!/bin/bash HOMEDIRS=/Users/* for dirs in $HOMEDIRS; do if ];... (5 Replies)
Discussion started by: Heath_T
5 Replies

6. Shell Programming and Scripting

Need help improving my script.

Thank you for taking the time to look at this and provide input. To start, I am not a linux/unix expert but I muddle through the best I can. I am also in no way shape or form a programmer. Please keep that in mind as you read this script. This script is designed to find all files in a given... (8 Replies)
Discussion started by: garlandxj11
8 Replies
CHASE(1)							Chase user's manual							  CHASE(1)

NAME
chase - chase symbolic links SYNOPSIS
chase [ --verbose | --from-file | -f | --null | -0 | --loop-warn-threshold COUNT | -w COUNT | --loop-fail-threshold COUNT | -l COUNT | --disable-loop-detection | -D ] [file...] chase -v | --version chase -h | --help DESCRIPTION
Chase is a small utility that tracks down the name of the actual file that is truly accessed, when one hits a symbolic link. It chases the link, so to speak. In normal operation, you give chase a name of an existing file. The program will then show you (or, more accurately, print to the standard output stream) the name of the real file that the original file referred to. It does not matter if you give the program the name of a reg- ular file; chase will just give you the same name back. You can give the utility the option --verbose, in order to have it be more verbose in its operation. You can also give the program a list of files from which it will read the file names to be chased (see the option --from-file). I'll give you a good example of a case where chase is useful. In a Debian GNU/Linux system, software installation is handled by the pro- gram dpkg(8). There is a way to query dpkg(8), which package a file belongs to. Unfortunately, this does not not grok all symlinks. This is a problem, since the Debian system uses symbolic links extensively for handling several flavours of a program (say, XEmacs and GNU Emacs and the versions 19 and 20 of both). Now with chase, one can determine the real file easily and then using this result as an argument to dpkg(8). Observe: ajk@ugh:~$ dpkg -S `which xemacs20` dpkg: /usr/bin/xemacs20 not found. ajk@ugh:~$ dpkg -S `which xemacs20 | xargs chase` xemacs20-nomule: /usr/bin/xemacs-20.4-nomule ajk@ugh:~$ When given multiple file names as arguments, chase will chase every one of them in order. OPTIONS
The following options are recognized by chase: --verbose Chat about what is being done. -f, --from-file Treat the file names on the command line as sources for names to be chased. If this option is present, chase will read in each of the files given on the command line (both a sole dash "-" and the absence of file names will be taken as meaning the standard input stream). Each line in the files is taken as a verbatim file name that will be chased like it had been given on the command line of a run without this option. There is no means for quoting the newline character; therefore only file names that do not contain new- lines can be specified via the files. This restriction is lifted by the -0 option, though. However, literal spaces are preserved and are not interpreted as special. -0, --null This option implies the option -f, which reads file names from a file. The -0 option modifies the behavior -f so that instead of treating lines in the file as file names, the file names are expected to be separated by null characters. This allows for specify- ing file names with newlines in them with -f. -w WCOUNT, --loop-warn-threshold=WCOUNT -l LCOUNT, --loop-fail-threshold=LCOUNT Set the threshold for warning about a possible symlink loop (WCOUNT) and for failing because of one (LCOUNT). There are default values, which you can find out by invoking chase with the argument --help. Using zero as WCOUNT or LCOUNT disables the check. -D, --disable-loop-detection Normally chase keeps a record of all symlinks it has visited when chasing the current file. It uses this record to reliably detect symlink loops. However, checking the record slows the process a little (more for long chains of symlinks) and the record requires a small amount of memory (more for long chains of symlinks), so it may be desirable in some cases to inhibit this check. This option disables this loop detection and the associated recording of visited symlinks. When this option is in effect (assuming no bugs in the related code) chase runs in constant space and linear time relative to the length of the symlink chains encountered. -h, --help Output a usage summary and exit successfully. -v, --version Show version information and exit successfully. DIAGNOSTICS
The exit status is 0 if and only if all files given in the command lines exist and none of them are dangling symlinks. The following messages are emitted by chase when it suspects or detects a symlink loop: quite many symlink hops, hope we're not looping... This means that the chain of symlinks is longer than a given threshold. This may mean that the chain is infinite (and thus contains a loop somewhere). The threshold can be specified by using the --loop-warn-threshold command line option. too many symlink hops, giving up... This means that the chain of symlinks is longer than a given threshold. This usually means that the chain is infinite (and thus contains a loop somewhere). The threshold can be specified by using the --loop-fail-threshold command line option. If you see this message, it means that chase has given up on that file. symlink loop detected, giving up... The symlink chain is looping and therefore there is no result for the chase. Chase has given up on that file. Additionally, Chase emits several error messages under problematic conditions. They all come from the system libraries, so the program has no control over the actual wording of the messages. They all follow the format "program name: file name: error message", where file name is the name of the offending file or directory. BUGS
Chase may have bugs. If you find them, please report them to <rotty@debian.org> or preferably via the Debian bugtracking system. AUTHOR
Chase has been written by Antti-Juhani Kaijanaho <gaia@iki.fi> and is currently maintained by Andreas Rottmann <rotty@debian.org>. SEE ALSO
find(1), ln(1), namei(1), readlink(1), readlink(2), symlinks(1) Chase 0.5 2000-01-02 CHASE(1)
All times are GMT -4. The time now is 05:12 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy