Visit Our UNIX and Linux User Community


Help with a For loop and variables


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with a For loop and variables
# 1  
Old 11-03-2011
Help with a For loop and variables

Greetings. I'm completely new to shell scripting and quickly trying to catch on. Here's my scenario:

I have a text file, named ip.txt, containing IP addresses. I want to automatically perform a whois query on each address in the file, search the output for the country, and then put both the IP address and the corresponding country together into a new file.

Here's what I've come up with so far:

Quote:
for i in `cat ./ip.txt`; do whois $i | grep -i 'country:'>>./country.txt; done
The problem with this, obviously, is that it doesn't list the IP address in the output file.

To the best that I can tell, I somehow need to store the grep results as a variable, and then maybe echo both variables into a new file.

Am I on the right track?

In the event that it matters, the system I'm trying to do this on is Debian 6.0.3.


Thanks!
# 2  
Old 11-03-2011
That's a dangerous use of backticks and useless use of cat. A 'while read' loop will be safer and faster.

You also don't need to reopen the same file 9000 times when processing 9000 IP addresses -- you can redirect the input and output of entire code blocks once instead of things inside them over and over.

Yes, store the result in a variable then print them both.

Code:
while read IP
do
        COUNTRY=$(whois "$IP" | grep -i "country:")
        echo "$IP: $COUNTRY"
done < ip.txt > out.txt

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 11-03-2011
Wow, I obviously have a lot to learn. Smilie

Thank you very much.


edit: removed duplicate
# 4  
Old 11-03-2011
Some of these things are less than obvious, for sure. I don't know where everyone picks up `cat file` though.
# 5  
Old 11-03-2011
Quote:
Originally Posted by Corona688
Some of these things are less than obvious, for sure. I don't know where everyone picks up `cat file` though.
In my case, Google. Smilie

Previous Thread | Next Thread
Test Your Knowledge in Computers #690
Difficulty: Medium
The Aircraft Navigation Computer Heathkit OC-1401/OCW-1401 used nine-level RPN in 1978.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with variables in loop

Hello, please assist: users="test1 test2" keytest1="abcd" keytest2="dbcd" for i in $users do echo "$key${i}" > fileout done So, my objective is to take the current user (ie test1) in loop and echo its associated keyname (ie keytest1) variable to a file. The echo... (2 Replies)
Discussion started by: motdman
2 Replies

2. Shell Programming and Scripting

Loop through variables

I am pretty new to Unix. Trying to pick up some slack while a coworker is out on vacation. Basically the script is working fine however when I go through the testing phase and have to make mods it is a pita. Here is an example of what I have #!/bin/ksh if then echo... (8 Replies)
Discussion started by: biobill
8 Replies

3. Shell Programming and Scripting

Need to loop three variables

Hi, I have a out from a command i need to grep a report. For that i need loop 3 variable for that. How i can loop need help. Symmetrix ID : 123456 Masking View Name : Host16 Last updated at : 04:13:06 PM on Thu Mar 17,2011 Initiator Group Name : Host16 Host... (3 Replies)
Discussion started by: ranjancom2000
3 Replies

4. Shell Programming and Scripting

for loop with 2 variables

i am having a file contants as below my requirement is for file in `awk -F "," '{print $8,$9}'` <temp.txt echo "$file" echo "$file">test.txt a=`awk -F "," '{print $1}' `<test.txt b=`awk -F "," '{print $2}' `<test.txt but script reads , i want both the vales for further... (5 Replies)
Discussion started by: sagar_1986
5 Replies

5. Shell Programming and Scripting

Need help in for loop with 2 variables

Hi, I need help on for loop need to add domain and IP In domain list 1.com 2.com 3.com In Ip list 1.1.0.1 1.2.0.1 1.3.0.1 1.com 1.1.0.1 2.com 1.2.0.1 3.com 1.3.0.1 I need to excute this command (4 Replies)
Discussion started by: ranjancom2000
4 Replies

6. Shell Programming and Scripting

Two variables in a for loop

Can we assign two variables in a for loop? I have an input file: 000301|20100502 835101|20100502 I want to read this file in a for loop and assign values to two different variables. I did this now but did not work for STORE,RUNDATE in `awk -F\| '{print $1,$2}' inputfile ... (4 Replies)
Discussion started by: gpaulose
4 Replies

7. Shell Programming and Scripting

SH: two variables in for loop

Hi, say I have a simple sh script like this: for i in a b c d do for j in 1 2 3 4 do echo "$i $j" done done and the output is a 1 a 2 a 3 a 4 b 1 (20 Replies)
Discussion started by: marcpascual
20 Replies

8. Shell Programming and Scripting

Using variables created sequentially in a loop while still inside of the loop [bash]

I'm trying to understand if it's possible to create a set of variables that are numbered based on another variable (using eval) in a loop, and then call on it before the loop ends. As an example I've written a script called question (The fist command is to show what is the contents of the... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

9. Shell Programming and Scripting

Is there a better way I could have run this loop. (For loop with two variables)

Sorry for such a dreadful title, but I'm not sure how to be more descriptive. I'm hoping some of the more gurutastic out there can take a look at a solution I came up with to a problem, and advice if there are better ways to have gone about it. To make a long story short around 20K pieces of... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

10. Shell Programming and Scripting

using variables outside a while loop

Hi Guys, I have a scripts that uses a while loop to read a file and set 2 variables. How can I do this so the variables can be used outside the while loop ? Below is an example....# ./junk2 -m -e user EXE=user master=TRUE DB_TAG=PRODUCT In loop MST=MST=testsvr1:3110 In loop ARGS=... (2 Replies)
Discussion started by: Tornado
2 Replies

Featured Tech Videos