{"id":475496,"date":"2022-07-19T09:02:05","date_gmt":"2022-07-19T06:02:05","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/how-to-use-negative-matching-with-grep-in-linux-print-lines-that-dont-match\/"},"modified":"2022-07-19T09:02:05","modified_gmt":"2022-07-19T06:02:05","slug":"how-to-use-negative-matching-with-grep-in-linux-print-lines-that-dont-match","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/how-to-use-negative-matching-with-grep-in-linux-print-lines-that-dont-match\/","title":{"rendered":"#How To Use Negative Matching With grep In Linux (Print Lines That Don\u2019t Match)"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a3712791313d\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a3712791313d\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-negative-matching-with-grep-in-linux-print-lines-that-dont-match\/#%E2%80%9CHow_To_Use_Negative_Matching_With_grep_In_Linux_Print_Lines_That_Dont_Match%E2%80%9D\" >&#8220;How To Use Negative Matching With grep In Linux (Print Lines That Don\u2019t Match)&#8221;<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-negative-matching-with-grep-in-linux-print-lines-that-dont-match\/#Negative_Matching_With_grep\" >Negative Matching With grep<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-negative-matching-with-grep-in-linux-print-lines-that-dont-match\/#Negative_Matching_Filenames\" >Negative Matching Filenames<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E2%80%9CHow_To_Use_Negative_Matching_With_grep_In_Linux_Print_Lines_That_Dont_Match%E2%80%9D\"><\/span>&#8220;How To Use Negative Matching With grep In Linux (Print Lines That Don\u2019t Match)&#8221;<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<div>\n<img loading=\"lazy\" decoding=\"async\" class=\"type:primaryImage alignnone size-full wp-image-4038\" data-pagespeed-no-defer=\"\" src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/csit\/2017\/07\/add8ac45.png?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"Bash Shell\" width=\"1400\" height=\"600\"\/><\/p>\n<p><code>grep<\/code>\u00a0is a command line search utility for Linux that will print out lines in files that match a pattern or regular expression. It\u2019s also useful to invert matches, which will filter out all lines in a file that contain the given string.<\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Negative_Matching_With_grep\"><\/span>Negative Matching With grep<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>To use negative matching in <code>grep<\/code>, you should execute the command with the <strong><code>-v<\/code>\u00a0or <code>--invert-match<\/code>\u00a0flags.<\/strong> This will print only the lines that don\u2019t match the pattern given.<\/p>\n<pre>grep -v \"bar\" file<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-16125\" data-pagespeed-lazy-src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/csit\/2022\/03\/3063ed30.png?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"492\" height=\"199\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>Keep in mind though that since <code>grep<\/code>\u00a0isn\u2019t matching anything, there\u2019s no way to use the <code>-o<\/code>\u00a0flag to print \u201conly the matches,\u201d since nothing has technically matched. <code>grep<\/code>\u00a0is able to match multiple times per line, but in this case, it will not matter if there are multiple matches. Any single match will cause <code>grep<\/code>\u00a0to omit the line.<\/p>\n<p>This works with regular expressions (regex) as well and will print any line that files to match the regex.<\/p>\n<pre>grep -v \"foo ba[rz]\" file<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-16126\" data-pagespeed-lazy-src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/csit\/2022\/03\/4d2bbbca.png?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"576\" height=\"96\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>While you can write regular expressions that do negative matching, it\u2019s <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/general\/\" data-internallinksmanager029f6b8e52c=\"3\" title=\"General\" target=\"_blank\" rel=\"noopener\">general<\/a>ly easier to invert the match this way.<\/p>\n<p>Alternatively, if you prefer using <code>awk<\/code>, you can use the exclamation\u00a0modifier to invert regex.<\/p>\n<pre>awk '!\/bar\/' file<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-16128\" data-pagespeed-lazy-src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/csit\/2022\/03\/348de7ef.png?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"483\" height=\"157\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Negative_Matching_Filenames\"><\/span>Negative Matching Filenames<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The lowercase <code>-l<\/code>\u00a0flag will cause <code>grep<\/code>\u00a0to print the filenames containing matches instead of the actual matched content. This can be useful when scanning a list of files, but similarly, it\u2019s also useful to invert this sometimes.<\/p>\n<p>The inverse of <code>-l<\/code>\u00a0is the uppercase variant, <code>-L<\/code>, which does the opposite:<\/p>\n<pre>grep -L \"bar\" .\/*.txt<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-16127\" data-pagespeed-lazy-src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/csit\/2022\/03\/f8f055ea.png?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"432\" height=\"90\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>Make sure you don\u2019t use the <code>-v<\/code>\u00a0flag with <code>-L<\/code> to invert the match before printing the files without the match, or you will run into a \u201cdouble opposites\u201d situation where the match is inverted twice and does not have the intended effect.<\/p>\n<\/div>\n<p><script>\n setTimeout(function(){\n  !function(f,b,e,v,n,t,s)\n  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n  n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n  n.queue=[];t=b.createElement(e);t.async=!0;\n  t.src=v;s=b.getElementsByTagName(e)[0];\n  s.parentNode.insertBefore(t,s) } (window, document,'script',\n  'https:\/\/connect.facebook.net\/en_US\/fbevents.js');\n   fbq('init', '335401813750447');\n   fbq('track', 'PageView');\n  },3000);\n<\/script><\/p>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/www.howtogeek.com\/devops\/how-to-use-negative-matching-with-grep-in-linux-print-lines-that-dont-match\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;How To Use Negative Matching With grep In Linux (Print Lines That Don\u2019t Match)&#8221; grep\u00a0is a command line search utility for Linux that will print out lines in files that match a pattern or regular expression. It\u2019s also useful to invert matches, which will filter out all lines in a file that contain the given&#8230;<\/p>\n","protected":false},"author":1,"featured_media":475497,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/www.howtogeek.com\/wp-content\/uploads\/csit\/2017\/07\/add8ac45.png?height=200p&trim=2,2,2,2","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-475496","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/475496","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=475496"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/475496\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/475497"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=475496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=475496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=475496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}