how to parse a specific key in a given string using linux shell script

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












1















I have a following pattern and would like to parse only one field
between /sys/bus/pci/devices/ and /device



Example 1
Input:
/sys/bus/pci/devices/0000:07:00.0/device:0x017a



Required output:
0000:07:00.0



Example 2
Input:
/sys/bus/pci/devices/0000:08:00.0/device:0x0abc



Required output:
0000:08:00.0










share|improve this question




























    1















    I have a following pattern and would like to parse only one field
    between /sys/bus/pci/devices/ and /device



    Example 1
    Input:
    /sys/bus/pci/devices/0000:07:00.0/device:0x017a



    Required output:
    0000:07:00.0



    Example 2
    Input:
    /sys/bus/pci/devices/0000:08:00.0/device:0x0abc



    Required output:
    0000:08:00.0










    share|improve this question


























      1












      1








      1








      I have a following pattern and would like to parse only one field
      between /sys/bus/pci/devices/ and /device



      Example 1
      Input:
      /sys/bus/pci/devices/0000:07:00.0/device:0x017a



      Required output:
      0000:07:00.0



      Example 2
      Input:
      /sys/bus/pci/devices/0000:08:00.0/device:0x0abc



      Required output:
      0000:08:00.0










      share|improve this question
















      I have a following pattern and would like to parse only one field
      between /sys/bus/pci/devices/ and /device



      Example 1
      Input:
      /sys/bus/pci/devices/0000:07:00.0/device:0x017a



      Required output:
      0000:07:00.0



      Example 2
      Input:
      /sys/bus/pci/devices/0000:08:00.0/device:0x0abc



      Required output:
      0000:08:00.0







      shell-script






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Feb 8 at 2:20









      Rui F Ribeiro

      40.7k1479137




      40.7k1479137










      asked Feb 8 at 1:33









      Seshagiri LekkalaSeshagiri Lekkala

      134




      134




















          2 Answers
          2






          active

          oldest

          votes


















          1














          If your input is always that regular, then a simple cut command will do the job



          cut -d/ -f6


          eg



          % echo /sys/bus/pci/devices/0000:07:00.0/device:0x017a | cut -d/ -f6
          0000:07:00.0

          % echo /sys/bus/pci/devices/0000:08:00.0/device:0x0abc | cut -d/ -f6
          0000:08:00.0





          share|improve this answer






























            0














            If the Input has not a fix number of /, you may also use grep with context:



            $ ... | grep -Po 'devices/K.*?(?=/device)'





            share|improve this answer






















              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
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f499389%2fhow-to-parse-a-specific-key-in-a-given-string-using-linux-shell-script%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              1














              If your input is always that regular, then a simple cut command will do the job



              cut -d/ -f6


              eg



              % echo /sys/bus/pci/devices/0000:07:00.0/device:0x017a | cut -d/ -f6
              0000:07:00.0

              % echo /sys/bus/pci/devices/0000:08:00.0/device:0x0abc | cut -d/ -f6
              0000:08:00.0





              share|improve this answer



























                1














                If your input is always that regular, then a simple cut command will do the job



                cut -d/ -f6


                eg



                % echo /sys/bus/pci/devices/0000:07:00.0/device:0x017a | cut -d/ -f6
                0000:07:00.0

                % echo /sys/bus/pci/devices/0000:08:00.0/device:0x0abc | cut -d/ -f6
                0000:08:00.0





                share|improve this answer

























                  1












                  1








                  1







                  If your input is always that regular, then a simple cut command will do the job



                  cut -d/ -f6


                  eg



                  % echo /sys/bus/pci/devices/0000:07:00.0/device:0x017a | cut -d/ -f6
                  0000:07:00.0

                  % echo /sys/bus/pci/devices/0000:08:00.0/device:0x0abc | cut -d/ -f6
                  0000:08:00.0





                  share|improve this answer













                  If your input is always that regular, then a simple cut command will do the job



                  cut -d/ -f6


                  eg



                  % echo /sys/bus/pci/devices/0000:07:00.0/device:0x017a | cut -d/ -f6
                  0000:07:00.0

                  % echo /sys/bus/pci/devices/0000:08:00.0/device:0x0abc | cut -d/ -f6
                  0000:08:00.0






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Feb 8 at 1:48









                  Stephen HarrisStephen Harris

                  26.4k24779




                  26.4k24779























                      0














                      If the Input has not a fix number of /, you may also use grep with context:



                      $ ... | grep -Po 'devices/K.*?(?=/device)'





                      share|improve this answer



























                        0














                        If the Input has not a fix number of /, you may also use grep with context:



                        $ ... | grep -Po 'devices/K.*?(?=/device)'





                        share|improve this answer

























                          0












                          0








                          0







                          If the Input has not a fix number of /, you may also use grep with context:



                          $ ... | grep -Po 'devices/K.*?(?=/device)'





                          share|improve this answer













                          If the Input has not a fix number of /, you may also use grep with context:



                          $ ... | grep -Po 'devices/K.*?(?=/device)'






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Feb 8 at 9:45









                          JJoaoJJoao

                          7,3491928




                          7,3491928



























                              draft saved

                              draft discarded
















































                              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.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f499389%2fhow-to-parse-a-specific-key-in-a-given-string-using-linux-shell-script%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

                              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?