Variable based AWK partly string match (if column/word partly matches)












0
















This question comes from this other.




Case scenario for my Linux shell script:



$ cat test.txt
C1 C2 C3
1 a snow
2 b snowman
snow c sowman


Searching for lines with third field containing "snow" works OK:



$ awk '$3 ~/snow/' test.txt
1 a snow
2 b snowman


But I need to do it by using variables:



$ word="snow"

$ echo $word
snow

$ awk -v variable="snow" '$3 ~/variable/' test.txt

$ awk -v variable="$word" '$3 ~/variable/' test.txt

$


As can be seen, there are no results.



How could I perform AWK search variable-based?










share|improve this question





























    0
















    This question comes from this other.




    Case scenario for my Linux shell script:



    $ cat test.txt
    C1 C2 C3
    1 a snow
    2 b snowman
    snow c sowman


    Searching for lines with third field containing "snow" works OK:



    $ awk '$3 ~/snow/' test.txt
    1 a snow
    2 b snowman


    But I need to do it by using variables:



    $ word="snow"

    $ echo $word
    snow

    $ awk -v variable="snow" '$3 ~/variable/' test.txt

    $ awk -v variable="$word" '$3 ~/variable/' test.txt

    $


    As can be seen, there are no results.



    How could I perform AWK search variable-based?










    share|improve this question



























      0












      0








      0









      This question comes from this other.




      Case scenario for my Linux shell script:



      $ cat test.txt
      C1 C2 C3
      1 a snow
      2 b snowman
      snow c sowman


      Searching for lines with third field containing "snow" works OK:



      $ awk '$3 ~/snow/' test.txt
      1 a snow
      2 b snowman


      But I need to do it by using variables:



      $ word="snow"

      $ echo $word
      snow

      $ awk -v variable="snow" '$3 ~/variable/' test.txt

      $ awk -v variable="$word" '$3 ~/variable/' test.txt

      $


      As can be seen, there are no results.



      How could I perform AWK search variable-based?










      share|improve this question

















      This question comes from this other.




      Case scenario for my Linux shell script:



      $ cat test.txt
      C1 C2 C3
      1 a snow
      2 b snowman
      snow c sowman


      Searching for lines with third field containing "snow" works OK:



      $ awk '$3 ~/snow/' test.txt
      1 a snow
      2 b snowman


      But I need to do it by using variables:



      $ word="snow"

      $ echo $word
      snow

      $ awk -v variable="snow" '$3 ~/variable/' test.txt

      $ awk -v variable="$word" '$3 ~/variable/' test.txt

      $


      As can be seen, there are no results.



      How could I perform AWK search variable-based?







      regex awk syntax






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 1 at 7:20









      Cyrus

      46.1k43878




      46.1k43878










      asked Jan 1 at 2:03









      Sopalajo de ArrierezSopalajo de Arrierez

      1,59822035




      1,59822035
























          1 Answer
          1






          active

          oldest

          votes


















          2














          You should change $3 ~/variable/ TO $3 ~ variable since a /../ contains regexp not variables. So in your case it will try to search "a string" named variable NOT "a variable" named variable.






          share|improve this answer





















          • 1





            Yes, /.../ is a regex literal. If the pattern is stored in a variable, you don't use the slashes.

            – glenn jackman
            Jan 1 at 3:20











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          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: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          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
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53992612%2fvariable-based-awk-partly-string-match-if-column-word-partly-matches%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









          2














          You should change $3 ~/variable/ TO $3 ~ variable since a /../ contains regexp not variables. So in your case it will try to search "a string" named variable NOT "a variable" named variable.






          share|improve this answer





















          • 1





            Yes, /.../ is a regex literal. If the pattern is stored in a variable, you don't use the slashes.

            – glenn jackman
            Jan 1 at 3:20
















          2














          You should change $3 ~/variable/ TO $3 ~ variable since a /../ contains regexp not variables. So in your case it will try to search "a string" named variable NOT "a variable" named variable.






          share|improve this answer





















          • 1





            Yes, /.../ is a regex literal. If the pattern is stored in a variable, you don't use the slashes.

            – glenn jackman
            Jan 1 at 3:20














          2












          2








          2







          You should change $3 ~/variable/ TO $3 ~ variable since a /../ contains regexp not variables. So in your case it will try to search "a string" named variable NOT "a variable" named variable.






          share|improve this answer















          You should change $3 ~/variable/ TO $3 ~ variable since a /../ contains regexp not variables. So in your case it will try to search "a string" named variable NOT "a variable" named variable.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jan 1 at 4:49

























          answered Jan 1 at 2:06









          RavinderSingh13RavinderSingh13

          28k41638




          28k41638








          • 1





            Yes, /.../ is a regex literal. If the pattern is stored in a variable, you don't use the slashes.

            – glenn jackman
            Jan 1 at 3:20














          • 1





            Yes, /.../ is a regex literal. If the pattern is stored in a variable, you don't use the slashes.

            – glenn jackman
            Jan 1 at 3:20








          1




          1





          Yes, /.../ is a regex literal. If the pattern is stored in a variable, you don't use the slashes.

          – glenn jackman
          Jan 1 at 3:20





          Yes, /.../ is a regex literal. If the pattern is stored in a variable, you don't use the slashes.

          – glenn jackman
          Jan 1 at 3:20




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • 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.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53992612%2fvariable-based-awk-partly-string-match-if-column-word-partly-matches%23new-answer', 'question_page');
          }
          );

          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







          Popular posts from this blog

          Monofisismo

          Angular Downloading a file using contenturl with Basic Authentication

          Olmecas