Why do I get “Binary file matches” with grep -I?What makes grep consider a file to be binary?Why doesn't grep ignore binary files by default?make grep confirm all matchescombining grep ignore and matchesGrep all strings from several binary files into one txt fileHow does grep decide that a file is binary?'True' matches with grep or awkgrep returns “Binary file (standard input) matches” when trying to find a string pattern in fileGrep count matches above 'X'grep doesn't print matches
Today is the Center
Fully-Firstable Anagram Sets
I Accidentally Deleted a Stock Terminal Theme
If human space travel is limited by the G force vulnerability, is there a way to counter G forces?
How can I make my BBEG immortal short of making them a Lich or Vampire?
Neighboring nodes in the network
Why does Kotter return in Welcome Back Kotter
Took a trip to a parallel universe, need help deciphering
How do I write bicross product symbols in latex?
A reference to a well-known characterization of scattered compact spaces
SSH "lag" in LAN on some machines, mixed distros
Why is it a bad idea to hire a hitman to eliminate most corrupt politicians?
How to say in German "enjoying home comforts"
When a company launches a new product do they "come out" with a new product or do they "come up" with a new product?
Is Lorentz symmetry broken if SUSY is broken?
Brothers & sisters
How could indestructible materials be used in power generation?
How to take photos in burst mode, without vibration?
What reasons are there for a Capitalist to oppose a 100% inheritance tax?
Why is the 'in' operator throwing an error with a string literal instead of logging false?
In a Spin are Both Wings Stalled?
Can one be a co-translator of a book, if he does not know the language that the book is translated into?
How to model explosives?
Python: return float 1.0 as int 1 but float 1.5 as float 1.5
Why do I get “Binary file matches” with grep -I?
What makes grep consider a file to be binary?Why doesn't grep ignore binary files by default?make grep confirm all matchescombining grep ignore and matchesGrep all strings from several binary files into one txt fileHow does grep decide that a file is binary?'True' matches with grep or awkgrep returns “Binary file (standard input) matches” when trying to find a string pattern in fileGrep count matches above 'X'grep doesn't print matches
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
In the following example, grep
behaves strangely: it's supplied with -I
option, which, according to man page, should make grep
ignore binary files (similarly to --binary-files=without-match
), but I still get the "Binary file matches" output.
$ cat <<'EOF' | uudecode > test-file
begin 664 /dev/stdout
M>`&5SLU*Q$`0!&#/>8J^"TM/=^8/1%2>1`>.^9Z=D-9!))9@7?WBB^@%"G
MHOBHO+8V=2!'-WU3A9PX%*8PBB:VGK@6)Y*HFAB(.2;.;$SQPX=LNG3(>2SH
MDJE!5;R+E9P21J::8U2+?@R>RK&7:[^L&[Q=]UD6>)$D?9<O_82[Y$&S4_,
MP[G)-)_RVN[!6(S.>F0/MB(P]$>5[O^%_$8+/(?,CSI+]%DD;/"^^,K3`OD
,6?8=GK6MPS?WDU!"
`
end
EOF
$ grep -I 8 test-file
Binary file test-file matches
$ grep --binary-files=without-match 8 test-file
Binary file test-file matches
Apparently, grep
considers the file binary, but still does try to match and reports the results with it. Why is the "binary file" not ignored as the -I
option prescribes?
I'm using GNU grep 3.1 on Ubuntu 18.04.
grep binary
add a comment |
In the following example, grep
behaves strangely: it's supplied with -I
option, which, according to man page, should make grep
ignore binary files (similarly to --binary-files=without-match
), but I still get the "Binary file matches" output.
$ cat <<'EOF' | uudecode > test-file
begin 664 /dev/stdout
M>`&5SLU*Q$`0!&#/>8J^"TM/=^8/1%2>1`>.^9Z=D-9!))9@7?WBB^@%"G
MHOBHO+8V=2!'-WU3A9PX%*8PBB:VGK@6)Y*HFAB(.2;.;$SQPX=LNG3(>2SH
MDJE!5;R+E9P21J::8U2+?@R>RK&7:[^L&[Q=]UD6>)$D?9<O_82[Y$&S4_,
MP[G)-)_RVN[!6(S.>F0/MB(P]$>5[O^%_$8+/(?,CSI+]%DD;/"^^,K3`OD
,6?8=GK6MPS?WDU!"
`
end
EOF
$ grep -I 8 test-file
Binary file test-file matches
$ grep --binary-files=without-match 8 test-file
Binary file test-file matches
Apparently, grep
considers the file binary, but still does try to match and reports the results with it. Why is the "binary file" not ignored as the -I
option prescribes?
I'm using GNU grep 3.1 on Ubuntu 18.04.
grep binary
add a comment |
In the following example, grep
behaves strangely: it's supplied with -I
option, which, according to man page, should make grep
ignore binary files (similarly to --binary-files=without-match
), but I still get the "Binary file matches" output.
$ cat <<'EOF' | uudecode > test-file
begin 664 /dev/stdout
M>`&5SLU*Q$`0!&#/>8J^"TM/=^8/1%2>1`>.^9Z=D-9!))9@7?WBB^@%"G
MHOBHO+8V=2!'-WU3A9PX%*8PBB:VGK@6)Y*HFAB(.2;.;$SQPX=LNG3(>2SH
MDJE!5;R+E9P21J::8U2+?@R>RK&7:[^L&[Q=]UD6>)$D?9<O_82[Y$&S4_,
MP[G)-)_RVN[!6(S.>F0/MB(P]$>5[O^%_$8+/(?,CSI+]%DD;/"^^,K3`OD
,6?8=GK6MPS?WDU!"
`
end
EOF
$ grep -I 8 test-file
Binary file test-file matches
$ grep --binary-files=without-match 8 test-file
Binary file test-file matches
Apparently, grep
considers the file binary, but still does try to match and reports the results with it. Why is the "binary file" not ignored as the -I
option prescribes?
I'm using GNU grep 3.1 on Ubuntu 18.04.
grep binary
In the following example, grep
behaves strangely: it's supplied with -I
option, which, according to man page, should make grep
ignore binary files (similarly to --binary-files=without-match
), but I still get the "Binary file matches" output.
$ cat <<'EOF' | uudecode > test-file
begin 664 /dev/stdout
M>`&5SLU*Q$`0!&#/>8J^"TM/=^8/1%2>1`>.^9Z=D-9!))9@7?WBB^@%"G
MHOBHO+8V=2!'-WU3A9PX%*8PBB:VGK@6)Y*HFAB(.2;.;$SQPX=LNG3(>2SH
MDJE!5;R+E9P21J::8U2+?@R>RK&7:[^L&[Q=]UD6>)$D?9<O_82[Y$&S4_,
MP[G)-)_RVN[!6(S.>F0/MB(P]$>5[O^%_$8+/(?,CSI+]%DD;/"^^,K3`OD
,6?8=GK6MPS?WDU!"
`
end
EOF
$ grep -I 8 test-file
Binary file test-file matches
$ grep --binary-files=without-match 8 test-file
Binary file test-file matches
Apparently, grep
considers the file binary, but still does try to match and reports the results with it. Why is the "binary file" not ignored as the -I
option prescribes?
I'm using GNU grep 3.1 on Ubuntu 18.04.
grep binary
grep binary
asked 2 days ago
RuslanRuslan
1,3841427
1,3841427
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Looking at the grep manual, this seems to be because (bold mine):
If type is ‘
without-match
’, when grep discovers null input binary data
it assumes that the rest of the file does not match; this is
equivalent to the-I
option.
However, grep also considers other data as indicating binary files:
Non-text bytes indicate binary data; these are either output bytes
that are improperly encoded for the current locale (see Environment
Variables), or null input bytes when the-z
(--null-data
)
option is not given (see Other Options).
So the message won't be printed if:
- the
-I
/--binary-files=without-match
options are given
and the binary-ness is due to null bytes.
However, that's not the case with the example input. The example file is treated as binary because it doesn't fit the current locale (probably some UTF locale), not because it has null bytes. Otherwise:
% LC_ALL=C grep 8 test-file
x���J�@`�y��
dIf��(��P������6u G7}S��8�0�&���'����9&�lL�Çl�t�y,蒩AU����F��cT�~
�ʱ�k��]�Yx�$}�/����O�O�ù�4�����X��zd�Ȉ��W���,�2<�/�d�����+L
�Y�����7��PB
If I add a null byte to the file, grep fails successfully:
% printf '' >> test-file
% grep -I 8 test-file
% echo $?
1
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f510044%2fwhy-do-i-get-binary-file-matches-with-grep-i%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Looking at the grep manual, this seems to be because (bold mine):
If type is ‘
without-match
’, when grep discovers null input binary data
it assumes that the rest of the file does not match; this is
equivalent to the-I
option.
However, grep also considers other data as indicating binary files:
Non-text bytes indicate binary data; these are either output bytes
that are improperly encoded for the current locale (see Environment
Variables), or null input bytes when the-z
(--null-data
)
option is not given (see Other Options).
So the message won't be printed if:
- the
-I
/--binary-files=without-match
options are given
and the binary-ness is due to null bytes.
However, that's not the case with the example input. The example file is treated as binary because it doesn't fit the current locale (probably some UTF locale), not because it has null bytes. Otherwise:
% LC_ALL=C grep 8 test-file
x���J�@`�y��
dIf��(��P������6u G7}S��8�0�&���'����9&�lL�Çl�t�y,蒩AU����F��cT�~
�ʱ�k��]�Yx�$}�/����O�O�ù�4�����X��zd�Ȉ��W���,�2<�/�d�����+L
�Y�����7��PB
If I add a null byte to the file, grep fails successfully:
% printf '' >> test-file
% grep -I 8 test-file
% echo $?
1
add a comment |
Looking at the grep manual, this seems to be because (bold mine):
If type is ‘
without-match
’, when grep discovers null input binary data
it assumes that the rest of the file does not match; this is
equivalent to the-I
option.
However, grep also considers other data as indicating binary files:
Non-text bytes indicate binary data; these are either output bytes
that are improperly encoded for the current locale (see Environment
Variables), or null input bytes when the-z
(--null-data
)
option is not given (see Other Options).
So the message won't be printed if:
- the
-I
/--binary-files=without-match
options are given
and the binary-ness is due to null bytes.
However, that's not the case with the example input. The example file is treated as binary because it doesn't fit the current locale (probably some UTF locale), not because it has null bytes. Otherwise:
% LC_ALL=C grep 8 test-file
x���J�@`�y��
dIf��(��P������6u G7}S��8�0�&���'����9&�lL�Çl�t�y,蒩AU����F��cT�~
�ʱ�k��]�Yx�$}�/����O�O�ù�4�����X��zd�Ȉ��W���,�2<�/�d�����+L
�Y�����7��PB
If I add a null byte to the file, grep fails successfully:
% printf '' >> test-file
% grep -I 8 test-file
% echo $?
1
add a comment |
Looking at the grep manual, this seems to be because (bold mine):
If type is ‘
without-match
’, when grep discovers null input binary data
it assumes that the rest of the file does not match; this is
equivalent to the-I
option.
However, grep also considers other data as indicating binary files:
Non-text bytes indicate binary data; these are either output bytes
that are improperly encoded for the current locale (see Environment
Variables), or null input bytes when the-z
(--null-data
)
option is not given (see Other Options).
So the message won't be printed if:
- the
-I
/--binary-files=without-match
options are given
and the binary-ness is due to null bytes.
However, that's not the case with the example input. The example file is treated as binary because it doesn't fit the current locale (probably some UTF locale), not because it has null bytes. Otherwise:
% LC_ALL=C grep 8 test-file
x���J�@`�y��
dIf��(��P������6u G7}S��8�0�&���'����9&�lL�Çl�t�y,蒩AU����F��cT�~
�ʱ�k��]�Yx�$}�/����O�O�ù�4�����X��zd�Ȉ��W���,�2<�/�d�����+L
�Y�����7��PB
If I add a null byte to the file, grep fails successfully:
% printf '' >> test-file
% grep -I 8 test-file
% echo $?
1
Looking at the grep manual, this seems to be because (bold mine):
If type is ‘
without-match
’, when grep discovers null input binary data
it assumes that the rest of the file does not match; this is
equivalent to the-I
option.
However, grep also considers other data as indicating binary files:
Non-text bytes indicate binary data; these are either output bytes
that are improperly encoded for the current locale (see Environment
Variables), or null input bytes when the-z
(--null-data
)
option is not given (see Other Options).
So the message won't be printed if:
- the
-I
/--binary-files=without-match
options are given
and the binary-ness is due to null bytes.
However, that's not the case with the example input. The example file is treated as binary because it doesn't fit the current locale (probably some UTF locale), not because it has null bytes. Otherwise:
% LC_ALL=C grep 8 test-file
x���J�@`�y��
dIf��(��P������6u G7}S��8�0�&���'����9&�lL�Çl�t�y,蒩AU����F��cT�~
�ʱ�k��]�Yx�$}�/����O�O�ù�4�����X��zd�Ȉ��W���,�2<�/�d�����+L
�Y�����7��PB
If I add a null byte to the file, grep fails successfully:
% printf '' >> test-file
% grep -I 8 test-file
% echo $?
1
answered 2 days ago
murumuru
37.2k589164
37.2k589164
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f510044%2fwhy-do-i-get-binary-file-matches-with-grep-i%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown