How do "if [ $variable -eq "a number" ] ?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How do "if [ $variable -eq "a number" ] ?
# 1  
Old 06-21-2007
How do "if [ $variable -eq "a number" ] ?

In particular I'm trying to check if a line contains an IP address and then do something with it.

The file contains some lines that have no numbers, some blank lines, and some lines with only IP addresses.

Code:
#!/bin/bash
touch file2.txt
cat file1.txt | \
while read line
do
if [ "$line" -eq [0-9]*.[0-9]*.[0-9]*.[0-9]* ]; then
echo "stuff $line"
fi
done

Also tried:
Code:
if [ "$line" -gt 1 ]; then


I'm guessing the [0-9]* isn't allowed within the test construct..

Ideas?
# 2  
Old 06-21-2007
Code:
echo $line | grep -q  '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'
if [ $? -eq 0 ] ; then
  echo "we found it: $line"
fi

Assuming the regexp (I changed it)works correctly for your data
# 3  
Old 06-21-2007
Thanks Jim,

That definitely made it run Smilie

How would I go about replacing the line it found it on with the echo'ed line?

ie it finds a line with only an IP address, say "1.2.3.4" and I would like that line to be changed to permit "1.2.3.4" within the same file.

Should I just use sed/awk? How do I use the found string in the sed command?

Last edited by earnstaf; 06-21-2007 at 01:49 PM..
# 4  
Old 06-21-2007
With ksh and bash (with option extglob enabled) you can also do :
Code:
if [[ $line == @([0-9]).@([0-9]).@([0-9]).@[0-9] ]]

Extract from bash man pages :
Quote:
If the extglob shell option is enabled using the shopt builtin, several extended
pattern matching operators are recognized. In the following description, a pat-
tern-list
is a list of one or more patterns separated by a |. Composite patterns
may be formed using one or more of the following sub-patterns:

?(pattern-list)
Matches zero or one occurrence of the given patterns
*(pattern-list)
Matches zero or more occurrences of the given patterns
+(pattern-list)
Matches one or more occurrences of the given patterns
@(pattern-list)
Matches one of the given patterns
!(pattern-list)
Matches anything except one of the given patterns
# 5  
Old 06-21-2007
Code:
#!/bin/bash
touch file2.txt
while read line
do
echo $line | grep -q  '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'
if [ $? -eq 0 ] ; then
  echo "we found it: $line"
else 
  echo "$line"
fi
done < file1.txt  > newfile
mv newfile file1.txt

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

ps -ef | grep "string1" "string2" " "string3"

Hi all, can any one suggest me the script to grep multiple strings from ps -ef pls correct the below script . its not working/ i want to print OK if all the below process are running in my solaris system. else i want to print NOT OK. bash-3.00$ ps -ef | grep blu lscpusr 48 42 ... (11 Replies)
Discussion started by: steve2216
11 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question