aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-01-22 13:28:30 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-01-22 13:33:04 +0100
commit912da4241774194c9cbb4bfca13384b14c5211aa (patch)
treed5c66b5f8f3a39160ebe236c023fef869e9daf4b
parent9dffaf04d5c4c58e50df74dd68b11862e2a35e05 (diff)
Change v and y to G and X
-rw-r--r--README.md16
-rw-r--r--man/grab.112
-rw-r--r--src/grab.c10
3 files changed, 19 insertions, 19 deletions
diff --git a/README.md b/README.md
index 8c79bda..c665a49 100644
--- a/README.md
+++ b/README.md
@@ -36,8 +36,8 @@ command is optional.
For example, a pattern string may look like ‘`x/[a-z]+/ g.foo. v/bar/`’.
-The available operators are ‘g’, ‘v’, ‘x’, and ‘y’. The ‘g’ and ‘v’
-operators are filter operators, while ‘x’ and ‘y’ are selection
+The available operators are ‘g’, ‘G’, ‘x’, and ‘X’. The ‘g’ and ‘G’
+operators are filter operators, while ‘x’ and ‘X’ are selection
operators.
You probably want to begin your pattern with a selection operator. By
@@ -52,11 +52,11 @@ echo 'foo12bar34baz' | grab 'x/[0-9]+/'
# ⇒ 34
```
-The ‘y’ operator works in reverse, selecting everything that _doesn’t_
+The ‘X’ operator works in reverse, selecting everything that _doesn’t_
match the given regex:
```sh
-echo 'foo12bar34baz' | grab 'y/[0-9]+/'
+echo 'foo12bar34baz' | grab 'X/[0-9]+/'
# ⇒ foo
# ⇒ bar
# ⇒ baz
@@ -64,7 +64,7 @@ echo 'foo12bar34baz' | grab 'y/[0-9]+/'
You can additionally use filter operators to keep or discard certain
results. The ‘g’ operator will filter out any results that don’t match
-the given regex, while the ‘v’ operator will do the opposite. To select
+the given regex, while the ‘G’ operator will do the opposite. To select
all numbers that contain a ‘3’ we can thus do:
``` sh
@@ -78,7 +78,7 @@ echo 'foo12bar34baz' | grab 'x/[0-9]+/ g/3/'
Likewise to select all numbers that don’t contain a ‘3’:
```sh
-echo 'foo12bar34baz' | grab 'x/[0-9]+/ v/3/'
+echo 'foo12bar34baz' | grab 'x/[0-9]+/ G/3/'
# ⇒ 12
```
@@ -87,7 +87,7 @@ contain a ‘3’ but aren’t the specific number ‘1337’, we could do the
following:
```sh
-grab 'x/[0-9]+/ g/3/ v/^1337$/' /foo/bar
+grab 'x/[0-9]+/ g/3/ G/^1337$/' /foo/bar
```
@@ -103,7 +103,7 @@ grep '^flags' /proc/cpuinfo \
| uniq
# With Grab
-grab 'x/^flags.*/ x/\w+/ v/flags/' /proc/cpuinfo \
+grab 'x/^flags.*/ x/\w+/ G/flags/' /proc/cpuinfo \
| sort \
| uniq
```
diff --git a/man/grab.1 b/man/grab.1
index ad0dffb..17609ae 100644
--- a/man/grab.1
+++ b/man/grab.1
@@ -181,29 +181,29 @@ The supported operators are as follows:
.Bl -tag -compact
.It g
Keep selections that match the given regex.
-.It v
+.It G
Discard selections that match the given regex.
.It x
Select everything that matches the given regex.
-.It y
+.It X
Select everything that doesn’t match the given regex.
.El
.Pp
An example pattern to match all numbers that contain a ‘3’ but aren’t
‘1337’ could be
-.Sq x/[0\-9]+/ g/3/ v/^1337$/ .
+.Sq x/[0\-9]+/ g/3/ G/^1337$/ .
In that pattern,
.Sq x/[0\-9]+/
selects all numbers in the input,
.Sq g/3/
keeps only those matches that contain the number 3,
and
-.Sq v/^1337$/
+.Sq G/^1337$/
filters out the specific number 1337.
.Pp
As you may use whichever delimiter you like, the following is also valid:
.Pp
-.Dl x|[0\-9]+| g.3. v#^1337#
+.Dl x|[0\-9]+| g.3. G#^1337#
.Sh ENVIRONMENT
.Bl -tag -width GRAB_COLORS
.It Ev GRAB_COLORS
@@ -251,7 +251,7 @@ option is provided.
.Sh EXAMPLES
List all your systems CPU flags, sorted and without duplicates:
.Pp
-.Dl $ grab 'x/^flags.*/ x/\ew+/ v/flags/' | sort | uniq
+.Dl $ grab 'x/^flags.*/ x/\ew+/ G/flags/' | sort | uniq
.Pp
Search for a pattern in multiple files without printing filenames:
.Pp
diff --git a/src/grab.c b/src/grab.c
index 112df40..dbed779 100644
--- a/src/grab.c
+++ b/src/grab.c
@@ -66,7 +66,7 @@ typedef void (*put_func)(struct sv, regmatch_t *, const char *);
static void cmdg(struct sv, struct ops, size_t, const char *);
static void cmdx(struct sv, struct ops, size_t, const char *);
-static void cmdy(struct sv, struct ops, size_t, const char *);
+static void cmdX(struct sv, struct ops, size_t, const char *);
static void putm(struct sv, regmatch_t *, const char *);
static void putm_nc(struct sv, regmatch_t *, const char *);
@@ -95,9 +95,9 @@ static struct {
static const cmd_func op_table[UCHAR_MAX] = {
['g'] = cmdg,
- ['v'] = cmdg,
+ ['G'] = cmdg,
['x'] = cmdx,
- ['y'] = cmdy,
+ ['X'] = cmdX,
};
static void
@@ -324,7 +324,7 @@ cmdg(struct sv sv, struct ops ops, size_t i, const char *filename)
struct op op = ops.buf[i];
r = regexec(&op.pat, sv.p, 1, &rm, REG_STARTEND);
- if ((r == REG_NOMATCH && op.c == 'g') || (r != REG_NOMATCH && op.c == 'v'))
+ if ((r == REG_NOMATCH && op.c == 'g') || (r != REG_NOMATCH && op.c == 'G'))
return;
if (i + 1 == ops.len)
@@ -366,7 +366,7 @@ cmdx(struct sv sv, struct ops ops, size_t i, const char *filename)
}
void
-cmdy(struct sv sv, struct ops ops, size_t i, const char *filename)
+cmdX(struct sv sv, struct ops ops, size_t i, const char *filename)
{
regmatch_t rm = {
.rm_so = 0,