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
How much RAM could one put in a typical 80386 setup?
Theorems that impeded progress
Maximum likelihood parameters deviate from posterior distributions
Important Resources for Dark Age Civilizations?
Why doesn't Newton's third law mean a person bounces back to where they started when they hit the ground?
Did Shadowfax go to Valinor?
Is it legal for company to use my work email to pretend I still work there?
NMaximize is not converging to a solution
Can a vampire attack twice with their claws using Multiattack?
If human space travel is limited by the G force vulnerability, is there a way to counter G forces?
Why do I get two different answers for this counting problem?
What's that red-plus icon near a text?
Cross compiling for RPi - error while loading shared libraries
Is it possible to run Internet Explorer on OS X El Capitan?
How to format long polynomial?
Decision tree nodes overlapping with Tikz
How is the claim "I am in New York only if I am in America" the same as "If I am in New York, then I am in America?
How is it possible to have an ability score that is less than 3?
What does "Puller Prush Person" mean?
Two films in a tank, only one comes out with a development error – why?
What doth I be?
Today is the Center
Paid for article while in US on F-1 visa?
"You are your self first supporter", a more proper way to say it
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 Apr 2 at 10:22
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 Apr 2 at 10:41
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