How to negate Bash's Regular Expression Matching Operator

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
0
down vote

favorite












Bash has the =~ regular expression matching operator. Here is an example of using it:



#!/bin/bash

input=$1


if [[ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]]
# ^ NOTE: Quoting not necessary, as of version 3.2 of Bash.
# NNN-NN-NNNN (where each N is a digit).
then
echo "Social Security number."
# Process SSN.
else
echo "Not a Social Security number!"
# Or, ask for corrected input.
fi


For negation, all the examples I have seen rely on an else clause. For situations where I am only interested in negative matches, is there a better way that making a non-functional if clause?



For example, if I only cared about the case where the above input is not a Not a Social Security number, what is the right way to go about this?









share

























    up vote
    0
    down vote

    favorite












    Bash has the =~ regular expression matching operator. Here is an example of using it:



    #!/bin/bash

    input=$1


    if [[ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]]
    # ^ NOTE: Quoting not necessary, as of version 3.2 of Bash.
    # NNN-NN-NNNN (where each N is a digit).
    then
    echo "Social Security number."
    # Process SSN.
    else
    echo "Not a Social Security number!"
    # Or, ask for corrected input.
    fi


    For negation, all the examples I have seen rely on an else clause. For situations where I am only interested in negative matches, is there a better way that making a non-functional if clause?



    For example, if I only cared about the case where the above input is not a Not a Social Security number, what is the right way to go about this?









    share























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      Bash has the =~ regular expression matching operator. Here is an example of using it:



      #!/bin/bash

      input=$1


      if [[ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]]
      # ^ NOTE: Quoting not necessary, as of version 3.2 of Bash.
      # NNN-NN-NNNN (where each N is a digit).
      then
      echo "Social Security number."
      # Process SSN.
      else
      echo "Not a Social Security number!"
      # Or, ask for corrected input.
      fi


      For negation, all the examples I have seen rely on an else clause. For situations where I am only interested in negative matches, is there a better way that making a non-functional if clause?



      For example, if I only cared about the case where the above input is not a Not a Social Security number, what is the right way to go about this?









      share













      Bash has the =~ regular expression matching operator. Here is an example of using it:



      #!/bin/bash

      input=$1


      if [[ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]]
      # ^ NOTE: Quoting not necessary, as of version 3.2 of Bash.
      # NNN-NN-NNNN (where each N is a digit).
      then
      echo "Social Security number."
      # Process SSN.
      else
      echo "Not a Social Security number!"
      # Or, ask for corrected input.
      fi


      For negation, all the examples I have seen rely on an else clause. For situations where I am only interested in negative matches, is there a better way that making a non-functional if clause?



      For example, if I only cared about the case where the above input is not a Not a Social Security number, what is the right way to go about this?







      bash regular-expression pattern-matching





      share












      share










      share



      share










      asked 3 mins ago









      MountainX

      4,7732469122




      4,7732469122

























          active

          oldest

          votes











          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',
          convertImagesToLinks: false,
          noModals: false,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













           

          draft saved


          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f477384%2fhow-to-negate-bashs-regular-expression-matching-operator%23new-answer', 'question_page');

          );

          Post as a guest



































          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f477384%2fhow-to-negate-bashs-regular-expression-matching-operator%23new-answer', 'question_page');

          );

          Post as a guest













































































          Popular posts from this blog

          How to check contact read email or not when send email to Individual?

          Displaying single band from multi-band raster using QGIS

          How many registers does an x86_64 CPU actually have?