LINK="#3366FF" VLINK="#A000A0">



(?) The Answer Gang (!)


By Jim Dennis, Ben Okopnik, Dan Wilder, Breen, Chris, and the Gang, the Editors of Linux Gazette... and You!
Send questions (or interesting answers) to tag@lists.linuxgazette.net

There is no guarantee that your questions here will ever be answered. You can be published anonymously - just let us know!


(?) script

From Paul Wilts

Answered By Ben Okopnik

(?) Hello there, I am hoping you can help me out. I am writing a script. I have a file that has two columns. one column with numbers and one column with names. This file stores users disk-usage/user-name ie: 50000 paul. I would like to run a script/command that would look into the file and if a user is over a certain number , that number/numbers along with the user/users name is copied from that file and put into a different file. I have tried almost everything I know, which is limited, but have not had any success. Thank you for your help

(!) [Ben] Well, you don't say what it is that you tried, or what language the script is in, but I'll take a flyer in a "bash" one-liner. If we have a file called "quotas" that looks like this:
5       joe
7       jim
12      jack
10      jeff
20      jose
1       jerry
3       jenny
8       jamal
6       jude
and we want only those users whose numbers exceed, say, 7, then we might do something like this:

while read a b; do [ $a -gt 7 ] && echo $a $b; done < quotas
What we've done here is read in each line and load the strings into two variables, $a and $b. We then check to see if $a is greater than our target number, and echo both of them if it is.
Note that the whitespace between the names and the numbers is ignored by 'read'; I only put it in to demonstrate how clever "bash" is about stuff like that. :)
You could also do it in Perl -

perl -wane 'print if $F[0] > 7' quotas
- split each line into an array, print if the 1st member of the array (arrays are indexed starting from 0) is greater than the target.
That should save lots of wear and tear on your fingers. :)

(?) Thanks very much for your help. Yes I was using Bash. I tried using the test and expr. What would you suggest for a good web site that would also be a good reference for information on scripts. Once again thanks.

(!) [Ben] Heh. I might have a suggestion.
A while ago, I wrote a 6-part series right here in Linux Gazette called "Introduction to Shell Scripting". It's been translated into 7 languages, and is used in at least two college courses. It was intended as a basic text - don't expect to be introduced into The Deepest Mysteries - but I believe that it's a very good start for anyone trying to learn shell scripting, and should get you up to basic competence in short order.
Take a look at LG issues 52-55 and 57-58 or <a href="http://www.linuxgazette.net/search.html">search for my last name (Okopnik)</a>, since one of the articles got misnamed in the e-mail shuffle.


This page edited and maintained by the Editors of Linux Gazette Copyright © 2001
Published in issue 65 of Linux Gazette April 2001
HTML script maintained by Heather Stern of Starshine Technical Services, http://www.starshine.org/


[ Table Of Contents ][ Answer Guy Current Index ] greetings   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29 [ Index of Past Answers ]