- Unix Commands Reference
- Unix Commands - Home
grepdiff - Unix, Linux Command
NAME
grepdiff - show files modified by a diff containing a regexSYNOPSIS
Tag | Description |
---|---|
grepdiff [-n] [--number-files] [-p n] [--strip=n] [--addprefix=PREFIX] [-s] [-i PATTERN] [-x PATTERN] [-v] [-E] [[-H] [--with-filename]] [[-h] [--no-filename]] [--output-matching=WHAT] {[REGEX] [-f FILE]} [file...]
grepdiff {[--help] [--version] [--list] [--filter ...]} |
DESCRIPTION
For each file modified by a patch, if the patch hunk contains the REGEX then the files name is printed.
The regular expression is treated as POSIX Basic Regular Expression syntax, unless the -E option is given in which case POSIX Extended Regular Expression syntax is used.
For example, to see the patches in
my.patch
which contain the regular expression
pf_gfp_mask
grepdiff pf_gfp_mask my.patch | \ xargs -rn1 filterdiff my.patch -i |
You can use both unified and context format diffs with this program.
OPTIONS
Tag | Description |
---|---|
-n |
Display the line number that each patch begins at. If verbose output is requested, each matching hunk is listed as well.
For a description of the output format see lsdiff(1). |
--number-files | |
File numbers are listed, beginning at 1, before each filename. | |
-p n | When matching, ignore the first n components of the pathname. |
--strip=n | |
Remove the first n components of the pathname before displaying it. | |
--addprefix=PREFIX | |
Prefix the pathname with PREFIX before displaying it. | |
-s |
Show file additions, modifications and removals. A file addition is indicated by a
|
-i PATTERN | |
Include only files matching PATTERN. | |
-x PATTERN | |
Exclude files matching PATTERN. | |
-E | Use POSIX Extended Regular Expression syntax. |
-H, --with-filename | |
Print the name of the patch file containing each match. | |
-h, --no-filename | |
Suppress the name of the patch file containing each match. | |
-f FILE | Read regular expressions from FILE, one per line. |
--output-matching=hunk|file | |
Display the matching hunk-level or file-level diffs. | |
--help | Display a short usage message. |
--version | |
Display the version number of grepdiff. | |
--filter | |
Behave like filterdiff(1) instead. | |
--list | Behave like lsdiff(1) instead. |
EXAMPLES
Consider the below patch file Hello.patch. It contains two patches generated from:
1. HelloWorld.c and HelloWorld_modified.c
2. HelloUniverse.c and HelloUniverse_modified.c
$ cat Hello.patch --- HelloWorld.c 2016-02-25 18:42:08.000000000 +0530 +++ HelloWorld_modified.c 2016-02-25 18:43:22.000000000 +0530 @@ -2,5 +2,7 @@ int main() { - printf("Hello World\n"); + char *msg = "Hello World\n"; + + printf("%s", msg); } --- HelloUniverse.c 2016-02-25 18:53:19.000000000 +0530 +++ HelloUniverse_modified.c 2016-02-25 18:53:37.000000000 +0530 @@ -2,5 +2,7 @@ int main() { - printf("Hello Universe\n"); + char *msg = "Hello Universe\n"; + + printf("%s", msg); }
Below two examples show basic usage of the command
1. Pattern matching in only one file
$ grepdiff "Hello World" Hello.patch HelloWorld.c $ grepdiff "Hello Universe" Hello.patch HelloUniverse.c
2. Pattern matching in multiple files
$ grepdiff "Hello" Hello.patch HelloWorld.c HelloUniverse.c
Advertisements