ImprovedEngineer
ImprovedEngineer

Reputation: 15

grep positive/negative integer value only

I am looking to grep any positive/negative integers only and no decimals, or any other variation including a number.

I have a testpart1.txt which has:

This is a test for Part 1
Lets write -1324
Amount: $42.27
Numbers:
       -345,64
067

Phone numbers:

       (111)222-2424

This should output the following code:

This is a test for Part 1
Lets write -1324
067

I am new to bash and I cannot find how to exclude any number separated with a character like a '.' or ','. I am able to get all the numbers with the following code but I am stuck after that:

egrep '[0-9]' testpart1.txt

This gives me the opposite of what I want:

grep '[0-9]\.[0-9]' testpart1.txt

Upvotes: 1

Views: 1515

Answers (1)

anubhava
anubhava

Reputation: 785108

You may use this grep:

grep -E '(^|[[:blank:]])[+-]?[0-9]+([[:blank:]]|$)' file

This is a test for Part 1
Lets write -1324
067

Details:

  • -E: Enables extended regex matching
  • (^|[[:blank:]]): Match line start or a space or a tab character
  • [+-]?: Match optional + or -
  • [0-9]+: Match 1 or more digits
  • ([[:blank:]]|$): Match line end or a space or a tab character

Upvotes: 1

Related Questions