When several prefix fields are to be output, the order is always file name, line number, and byte offset, regardless of the order in which these options were specified.
Print the 0-based byte offset within the input file
before each line of output.
If -o (--only-matching) is specified,
print the offset of the matching part itself.
grep runs on MS-DOS or MS-Windows,
the printed byte offsets depend on whether
the -u (--unix-byte-offsets) option is used;
Print the file name for each match. This is the default when there is more than one file to search.
Suppress the prefixing of file names on output. This is the default when there is only one file (or only standard input) to search.
Display input actually coming from standard input
as input coming from file LABEL. This is
especially useful when implementing tools like
gzip -cd foo.gz | grep --label=foo -H something
Prefix each line of output with the 1-based line number within its input file. (-n is specified by POSIX.)
Make sure that the first character of actual line content lies on a tab stop, so that the alignment of tabs looks normal. This is useful with options that prefix their output to the actual content: -H, -n, and -b. In order to improve the probability that lines from a single file will all start at the same column, this also causes the line number and byte offset (if present) to be printed in a minimum-size field width.
Report Unix-style byte offsets.
This option causes
grep to report byte offsets
as if the file were a Unix-style text file,
i.e., the byte offsets ignore carriage returns that were stripped.
This will produce results identical
grep on a Unix machine.
This option has no effect unless the -b option is also used;
it has no effect on platforms other than MS-DOS and MS-Windows.
Output a zero byte (the ASCII NUL character) instead of the character that normally follows a file name. For example, ‘grep -lZ’ outputs a zero byte after each file name instead of the usual newline. This option makes the output unambiguous, even in the presence of file names containing unusual characters like newlines. This option can be used with commands like ‘find -print0’, ‘perl -0’, ‘sort -z’, and ‘xargs -0’ to process arbitrary file names, even those that contain newline characters.