|
|
#1 |
|
grep syntax help
Let's say I have a file that contains ordered pairs of data.
Example.. -10 -10 -10 -9 ... 10 9 10 10 If I want to grep out a portion of this file, say from -5 -5 to 5 5, I would use grep but I am returning extra data such as -5 6 which is outside of my search. Here is the code I have but I could use some help with my grep term. Code:
#!/bin/bash
for ((x=-5; x<=5; x++))
do
for ((y=-5; y<=5; y++))
do
grep -- "$x $y" file
done
done
Thanks. Last edited by Big Dave; Jan 23, 2013 at 08:25 PM. Reason: error |
|
|
|
0
|
|
|
#2 |
|
If I wanted to do this, I'd probably try awk. Just have a rangeStarted that starts false, and for each line see if you're looking at the starting value. If so, set hasStarted to true and print. Once you've found the end you can set rangeStarted back to false or just use exit to quit.
-Lee |
|
|
|
0
|
|
|
#3 |
|
Or even more simply:
cat file | awk '($1 <= 5 && $1 >= -5) && ($2 <=5 && $2 >= -5){print $0}' |
|
|
|
0
|
|
|
#4 |
|
|
0
|
|
|
#5 |
|
Unfortunately, the logic is more complex. If $1 is between -4 and 4, print. If $1 is -5 and $2 is >= -5, print. If $1 is 5 and $2 is <= 5, print. Doing it based on a range seemed like less code.
-Lee Edit: The OP said it worked... So good news. I'd expect you wouldn't get -4 8, 3 10, etc. but maybe I'm misreading. |
|
|
|
0
|
![]() |
|
«
Previous Thread
|
Next Thread
»
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
All times are GMT -5. The time now is 12:13 AM.







Linear Mode
