Visit Our UNIX and Linux User Community


Need some help with a regex if loop problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need some help with a regex if loop problem
# 1  
Old 08-06-2010
Need some help with a regex if loop problem

Need some help with a regex if loop problem.
File1:
Code:
2323
3232
4230
3230
4340
4343
233
32320

I want to print "Zero" if the number ends with a zero, but print "number" if it does not!
Code:
#!/bin/bash
/usr/bin/nawk '{
if ($1 ==/[0-9]+0\b/){
 print "Zero"}
else{
 print "number"}
}' File1

this code just prints out "Number" for each line! Help!
# 2  
Old 08-06-2010
One way:
Code:
awk '{print $0%10?"Number":"Zero"}' file

# 3  
Old 08-06-2010
Code:
awk '{if($0 ~ "0$") {print "Zero"} else {print "number"}}' yourfile

edit: one more:
Code:
sed "s/.*[1-9]$/number/g;s/.*0$/zero/g" yourfile


Moderator's Comments:
Mod Comment Please use code tags, thank you!

Last edited by Franklin52; 08-06-2010 at 03:44 PM..
# 4  
Old 08-06-2010
Quote:
Originally Posted by linuxkid
...I want to print "Zero" if the number ends with a zero, but print "number" if it does not!
Code:
#!/bin/bash
/usr/bin/nawk '{
if ($1 ==/[0-9]+0\b/){
 print "Zero"}
else{
 print "number"}
}' File1

this code just prints out "Number" for each line!
The "~" operator is for matching regular expressions.

Code:
$
$ awk '{if ($0 ~ /0$/) {print $0,"Zero"} else {print $0,"number"}}' f1
2323 number
3232 number
4230 Zero
3230 Zero
4340 Zero
4343 number
233 number
32320 Zero
$
$ # or alternatively -
$ awk '/0$/ {print $0,"Zero"} !/0$/ {print $0,"number"}' f1
2323 number
3232 number
4230 Zero
3230 Zero
4340 Zero
4343 number
233 number
32320 Zero
$
$

tyler_durden
# 5  
Old 08-09-2010
Code:
while read -r LINE
do
  case "$LINE" in
    *0 ) echo "zero";;
    *[1-9]) echo "number";;
  esac
done <"file"

# 6  
Old 08-09-2010
Quote:
Originally Posted by linuxkid
Need some help with a regex if loop problem.
File1:
Code:
2323
3232
4230
3230
4340
4343
233
32320

I want to print "Zero" if the number ends with a zero, but print "number" if it does not!
Code:
#!/bin/bash
/usr/bin/nawk '{
if ($1 ==/[0-9]+0\b/){
 print "Zero"}
else{
 print "number"}
}' File1

this code just prints out "Number" for each line! Help!
In addition to the operator error pointed out by durden_tyler, \b in an awk regular expression is an escape sequence which matches the backspace character (unlike in perl where it refers to a word boundary).

Previous Thread | Next Thread
Test Your Knowledge in Computers #634
Difficulty: Easy
The first iPhone featured an internal rechargeable nickel cadmium battery.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl Regex problem

Script logs into switches on my list but nothing seems to happen. Following error: tr nope, doesn't (yet) match (?-xism:-]+ ?(?:\(config*\))? ? ?$) du SEEN: Here is code in question: @version_info = $session_obj->cmd('term length 0'); $session_obj->cmd('show int | i... (5 Replies)
Discussion started by: mrlayance
5 Replies

2. Shell Programming and Scripting

REGEX to separate paths by whitespace and do a loop

I am trying to do in a single line to take a list of paths separated by whitespace and then loop thru all the paths that were wrote but my regex is not working, I have echo {3} | sed 's/ //g' | while read EACHFILE do ..... But for some reason is only taking always the first path that I... (7 Replies)
Discussion started by: jorgejac
7 Replies

3. Shell Programming and Scripting

Failure using regex with awk in 'while read file' loop

I have a file1.txt with several 100k lines, each of which has a column 9 containing one of 60 "label" identifiers. Using an labels.txt file containing a list of labels, I'd like to extract 200 random lines from file1.txt for each of the labels in index.txt. Using a contrived mini-example: $ cat... (8 Replies)
Discussion started by: pathunkathunk
8 Replies

4. Programming

Regex problem

Hi, I am looking for regex to extract following words from text: The word which comes after "Replaced" means Replaced disk Replaced floppy Replaced memory Please suggest the regex for it. Thanks! (4 Replies)
Discussion started by: gunjanamit
4 Replies

5. Shell Programming and Scripting

awk regex problem

hi everyone suppose my input file is ABC-12345 ABCD-12345 BCD-123456 i want to search the specific pattern which looks like - in a file so i used this command cat $file | awk ' { if ($0 ~ /-/) { print } }' so it gives me the result as ABCD-12345 BCD-12345 BCD-12345 ... (31 Replies)
Discussion started by: aishsimplesweet
31 Replies

6. UNIX for Advanced & Expert Users

Sed regex problem

Hi, I tried to extract the time from `date` with sed. (I know it works with `date +%H:%M:%S` as well) I got three solutions of which just one worked. I thought "+" should repeat the previous expression 1 or more times and {n} should repeat the previous expression n times. $ date Thu... (9 Replies)
Discussion started by: thiuda
9 Replies

7. Programming

REGEX problem

Hi there, How can we use regex in perl to store the Route Distinguisher (the bold field) and also the underlined and bold lines in the below file? Note: These highlighted pattern is redundant through the whole input file. Basically, we just need to extract these fields at least to store them... (4 Replies)
Discussion started by: omoyne
4 Replies

8. UNIX for Dummies Questions & Answers

regex problem with +

Hi, Can someone tell me why the first regular expression with the + fails to match the input string? SUN /web>echo cat | grep '+' SUN /web>echo cat | grep '' cat I'm running SunOS 5.10 Thanks. Chris (2 Replies)
Discussion started by: che9000
2 Replies

9. Shell Programming and Scripting

regex problem

Hi, #!/usr/bin/perl -w my $timestamp; my $line = "Fri May 29 18:29:57.357 2009 Morocco Standard Time INFO: pid 3216 tid 1724: 170: 132192: apricocot Native Server: recvd AA_BIN_MSG_VER_CHG"; if ($line =~ /^(.*) INFO: .* recvd AA_BIN_MSG_VER_CHG/) { $timestamp = $1; ... (1 Reply)
Discussion started by: namishtiwari
1 Replies

10. Shell Programming and Scripting

grep regex problem

Hi, I am trying to do something with grep, but for some reason I just can't get it to to work. I am looking for find a match in the second field, the length must be 10 characters and end with 'abc'. The file is in this format: <int><tab><field2> I've tried a few patterns, some work,... (2 Replies)
Discussion started by: iceman
2 Replies

Featured Tech Videos