Bash remove first and last characters from a stringRemove string and replace a new string with formatMake a string from array of StringsBash script, cannote replace string in a file with escaped $ and &How Can I Remove All Characters After a Certain Character Appears Twice Using Bash Scripting?Select only the first lines that contain a repeated stringBash script and escaping special characters in passwordhow to use sed to replace from last 3 characters from stringUsing source command to replace bash string with field arrayHow to extract certain strings from hyperlink and create a folder with same string in bash?Converting a string of Perl code to BASH code

Asserting that Atheism and Theism are both faith based positions

Fewest number of steps to reach 200 using special calculator

How to define limit operations in general topological spaces? Are nets able to do this?

Does the attack bonus from a Masterwork weapon stack with the attack bonus from Masterwork ammunition?

Is it true that good novels will automatically sell themselves on Amazon (and so on) and there is no need for one to waste time promoting?

Loading the leaflet Map in Lightning Web Component

Is there a term for accumulated dirt on the outside of your hands and feet?

World War I as a war of liberals against authoritarians?

Can you move over difficult terrain with only 5 feet of movement?

What is the term when voters “dishonestly” choose something that they do not want to choose?

Are dual Irish/British citizens bound by the 90/180 day rule when travelling in the EU after Brexit?

If "dar" means "to give", what does "daros" mean?

What can I do if I am asked to learn different programming languages very frequently?

In what cases must I use 了 and in what cases not?

Should I be concerned about student access to a test bank?

Is there a hypothetical scenario that would make Earth uninhabitable for humans, but not for (the majority of) other animals?

Comment Box for Substitution Method of Integrals

Existence of a celestial body big enough for early civilization to be thought of as a second moon

HP P840 HDD RAID 5 many strange drive failures

How does 取材で訪れた integrate into this sentence?

I got the following comment from a reputed math journal. What does it mean?

How are passwords stolen from companies if they only store hashes?

Print last inputted byte

Suggestions on how to spend Shaabath (constructively) alone



Bash remove first and last characters from a string


Remove string and replace a new string with formatMake a string from array of StringsBash script, cannote replace string in a file with escaped $ and &How Can I Remove All Characters After a Certain Character Appears Twice Using Bash Scripting?Select only the first lines that contain a repeated stringBash script and escaping special characters in passwordhow to use sed to replace from last 3 characters from stringUsing source command to replace bash string with field arrayHow to extract certain strings from hyperlink and create a folder with same string in bash?Converting a string of Perl code to BASH code













87















I have a string like that:



|abcdefg|


And I want to get a new string called in someway (like string2) with the original string without the two | characters at the start and at the end of it so that I will have this:



abcdefg


Is that possible in bash?










share|improve this question




























    87















    I have a string like that:



    |abcdefg|


    And I want to get a new string called in someway (like string2) with the original string without the two | characters at the start and at the end of it so that I will have this:



    abcdefg


    Is that possible in bash?










    share|improve this question


























      87












      87








      87


      18






      I have a string like that:



      |abcdefg|


      And I want to get a new string called in someway (like string2) with the original string without the two | characters at the start and at the end of it so that I will have this:



      abcdefg


      Is that possible in bash?










      share|improve this question
















      I have a string like that:



      |abcdefg|


      And I want to get a new string called in someway (like string2) with the original string without the two | characters at the start and at the end of it so that I will have this:



      abcdefg


      Is that possible in bash?







      bash command-line scripts






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 16 mins ago









      Guy Avraham

      1156




      1156










      asked Dec 23 '11 at 14:29









      Matteo PagliazziMatteo Pagliazzi

      1,28251733




      1,28251733




















          8 Answers
          8






          active

          oldest

          votes


















          111














          You can do



          string="|abcdefg|"
          string2=$string#"
          string2=$"
          echo $string2


          Or if your string length is constant, you can do



          string="|abcdefg|"
          string2=$string:1:7
          echo $string2


          Also, this should work



          echo "|abcdefg|" | cut -d "|" -f 2


          Also this



          echo "|abcdefg|" | sed 's/^|(.*)|$/1/'





          share|improve this answer




















          • 2





            and also awk -F| ' print $2 ' <<<"|string|"

            – enzotib
            Dec 23 '11 at 17:45






          • 1





            @enzotib You always have cool awk solutions. I need to learn awk.

            – Kris Harper
            Dec 23 '11 at 18:36







          • 2





            and also IFS='|' read string2 <<< $string :)

            – arrange
            Dec 23 '11 at 20:38






          • 9





            and also, in bash 4.2 and newer, "$string:1:-1"

            – geirha
            Jul 5 '12 at 12:52












          • Read under the "parameter expansion" section in man bash.

            – Nemo
            Sep 5 '12 at 20:44


















          58














          Here's a solution that is independent of the length of the string (bash):



          string="|abcdefg|"
          echo "$string:1:$#string-2"





          share|improve this answer
































            23














            Going off a few posts listed here it seems the simplest way to do it is:



            string="|abcdefg|"
            echo $string:1:-1


            edit: works on ubuntu with bash 4.2; does not work on centOS with bash 4.1






            share|improve this answer
































              15














              Another way is to use head & tail commands:



              $ echo -n "|abcdefg|" | tail -c +2 | head -c -2
              abcdefg





              share|improve this answer




















              • 1





                I had a string of [something something] with a goal to cut brackets, so echo "[something something]" | tail -c +2 | head -c -2 worked out. Thanks for a tip!

                – Ain Tohvri
                Dec 13 '15 at 15:36


















              10














              And another one:



              string="|abcdefg|"
              echo "$string//"





              share|improve this answer
































                8














                You can also use sed to remove the | not just referencing the symbol itself but using positional references as in:



                $ echo "|abcdefg|" | sed 's:^.(.*).$:1:'
                abcdefg


                Where ':' are the delimiters (you can replace them with / or any character not in the query, any sign following the s will do it) Here ^ (caret) means at the beginning of the input string and $ (dollar) means at the end. The . (point) that it's after the caret and the one that it's before the dollar sign represents a single character. So in other words we are deleting the first and last characters.
                Take in mind this will delete any characters even if | it's not present in the string.



                EX:



                $ echo "abcdefg" | sed 's:^.(.*).$:1:'
                bcdef





                share|improve this answer






























                  2














                  shell function



                  A bit more verbose approach, but works on any sort of first and last character, doesn't have to be the same. Basic idea is that we are taking a variable, reading it character by character, and appending only those
                  we want to a new variable



                  Here's that whole idea formatted into a nice function



                  crop_string_ends() 


                  And here is that same function in action:



                  $> crop_string_ends "|abcdefg|" 
                  abcdefg
                  $> crop_string_ends "HelloWorld"
                  elloWorl


                  Python



                  >>> mystring="|abcdefg|"
                  >>> print(mystring[1:-1])
                  abcdefg


                  or on command line:



                  $ python -c 'import sys;print sys.stdin.read()[1:-2]' <<< "|abcdefg|" 
                  abcdefg


                  AWK



                  $ echo "|abcdefg|" | awk 'print substr($0,2,length($0)-2)' 
                  abcdefg


                  Ruby



                  $ ruby -ne 'print $_.split("|")[1]' <<< "|abcdefg|" 
                  abcdefg





                  share|improve this answer
































                    1














                    Small and universal solution:



                    expr "|abcdef|" : '.(.*).'


                    Special in this case and allowing that the '|' character may be there or not:



                    expr "|abcdef" : '|*([^|]*)|*'





                    share|improve this answer
























                      Your Answer








                      StackExchange.ready(function()
                      var channelOptions =
                      tags: "".split(" "),
                      id: "89"
                      ;
                      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%2faskubuntu.com%2fquestions%2f89995%2fbash-remove-first-and-last-characters-from-a-string%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown

























                      8 Answers
                      8






                      active

                      oldest

                      votes








                      8 Answers
                      8






                      active

                      oldest

                      votes









                      active

                      oldest

                      votes






                      active

                      oldest

                      votes









                      111














                      You can do



                      string="|abcdefg|"
                      string2=$string#"
                      string2=$"
                      echo $string2


                      Or if your string length is constant, you can do



                      string="|abcdefg|"
                      string2=$string:1:7
                      echo $string2


                      Also, this should work



                      echo "|abcdefg|" | cut -d "|" -f 2


                      Also this



                      echo "|abcdefg|" | sed 's/^|(.*)|$/1/'





                      share|improve this answer




















                      • 2





                        and also awk -F| ' print $2 ' <<<"|string|"

                        – enzotib
                        Dec 23 '11 at 17:45






                      • 1





                        @enzotib You always have cool awk solutions. I need to learn awk.

                        – Kris Harper
                        Dec 23 '11 at 18:36







                      • 2





                        and also IFS='|' read string2 <<< $string :)

                        – arrange
                        Dec 23 '11 at 20:38






                      • 9





                        and also, in bash 4.2 and newer, "$string:1:-1"

                        – geirha
                        Jul 5 '12 at 12:52












                      • Read under the "parameter expansion" section in man bash.

                        – Nemo
                        Sep 5 '12 at 20:44















                      111














                      You can do



                      string="|abcdefg|"
                      string2=$string#"
                      string2=$"
                      echo $string2


                      Or if your string length is constant, you can do



                      string="|abcdefg|"
                      string2=$string:1:7
                      echo $string2


                      Also, this should work



                      echo "|abcdefg|" | cut -d "|" -f 2


                      Also this



                      echo "|abcdefg|" | sed 's/^|(.*)|$/1/'





                      share|improve this answer




















                      • 2





                        and also awk -F| ' print $2 ' <<<"|string|"

                        – enzotib
                        Dec 23 '11 at 17:45






                      • 1





                        @enzotib You always have cool awk solutions. I need to learn awk.

                        – Kris Harper
                        Dec 23 '11 at 18:36







                      • 2





                        and also IFS='|' read string2 <<< $string :)

                        – arrange
                        Dec 23 '11 at 20:38






                      • 9





                        and also, in bash 4.2 and newer, "$string:1:-1"

                        – geirha
                        Jul 5 '12 at 12:52












                      • Read under the "parameter expansion" section in man bash.

                        – Nemo
                        Sep 5 '12 at 20:44













                      111












                      111








                      111







                      You can do



                      string="|abcdefg|"
                      string2=$string#"
                      string2=$"
                      echo $string2


                      Or if your string length is constant, you can do



                      string="|abcdefg|"
                      string2=$string:1:7
                      echo $string2


                      Also, this should work



                      echo "|abcdefg|" | cut -d "|" -f 2


                      Also this



                      echo "|abcdefg|" | sed 's/^|(.*)|$/1/'





                      share|improve this answer















                      You can do



                      string="|abcdefg|"
                      string2=$string#"
                      string2=$"
                      echo $string2


                      Or if your string length is constant, you can do



                      string="|abcdefg|"
                      string2=$string:1:7
                      echo $string2


                      Also, this should work



                      echo "|abcdefg|" | cut -d "|" -f 2


                      Also this



                      echo "|abcdefg|" | sed 's/^|(.*)|$/1/'






                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      edited Dec 23 '11 at 18:36

























                      answered Dec 23 '11 at 14:49









                      Kris HarperKris Harper

                      9,689114771




                      9,689114771







                      • 2





                        and also awk -F| ' print $2 ' <<<"|string|"

                        – enzotib
                        Dec 23 '11 at 17:45






                      • 1





                        @enzotib You always have cool awk solutions. I need to learn awk.

                        – Kris Harper
                        Dec 23 '11 at 18:36







                      • 2





                        and also IFS='|' read string2 <<< $string :)

                        – arrange
                        Dec 23 '11 at 20:38






                      • 9





                        and also, in bash 4.2 and newer, "$string:1:-1"

                        – geirha
                        Jul 5 '12 at 12:52












                      • Read under the "parameter expansion" section in man bash.

                        – Nemo
                        Sep 5 '12 at 20:44












                      • 2





                        and also awk -F| ' print $2 ' <<<"|string|"

                        – enzotib
                        Dec 23 '11 at 17:45






                      • 1





                        @enzotib You always have cool awk solutions. I need to learn awk.

                        – Kris Harper
                        Dec 23 '11 at 18:36







                      • 2





                        and also IFS='|' read string2 <<< $string :)

                        – arrange
                        Dec 23 '11 at 20:38






                      • 9





                        and also, in bash 4.2 and newer, "$string:1:-1"

                        – geirha
                        Jul 5 '12 at 12:52












                      • Read under the "parameter expansion" section in man bash.

                        – Nemo
                        Sep 5 '12 at 20:44







                      2




                      2





                      and also awk -F| ' print $2 ' <<<"|string|"

                      – enzotib
                      Dec 23 '11 at 17:45





                      and also awk -F| ' print $2 ' <<<"|string|"

                      – enzotib
                      Dec 23 '11 at 17:45




                      1




                      1





                      @enzotib You always have cool awk solutions. I need to learn awk.

                      – Kris Harper
                      Dec 23 '11 at 18:36






                      @enzotib You always have cool awk solutions. I need to learn awk.

                      – Kris Harper
                      Dec 23 '11 at 18:36





                      2




                      2





                      and also IFS='|' read string2 <<< $string :)

                      – arrange
                      Dec 23 '11 at 20:38





                      and also IFS='|' read string2 <<< $string :)

                      – arrange
                      Dec 23 '11 at 20:38




                      9




                      9





                      and also, in bash 4.2 and newer, "$string:1:-1"

                      – geirha
                      Jul 5 '12 at 12:52






                      and also, in bash 4.2 and newer, "$string:1:-1"

                      – geirha
                      Jul 5 '12 at 12:52














                      Read under the "parameter expansion" section in man bash.

                      – Nemo
                      Sep 5 '12 at 20:44





                      Read under the "parameter expansion" section in man bash.

                      – Nemo
                      Sep 5 '12 at 20:44













                      58














                      Here's a solution that is independent of the length of the string (bash):



                      string="|abcdefg|"
                      echo "$string:1:$#string-2"





                      share|improve this answer





























                        58














                        Here's a solution that is independent of the length of the string (bash):



                        string="|abcdefg|"
                        echo "$string:1:$#string-2"





                        share|improve this answer



























                          58












                          58








                          58







                          Here's a solution that is independent of the length of the string (bash):



                          string="|abcdefg|"
                          echo "$string:1:$#string-2"





                          share|improve this answer















                          Here's a solution that is independent of the length of the string (bash):



                          string="|abcdefg|"
                          echo "$string:1:$#string-2"






                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Jul 5 '12 at 12:44









                          Eliah Kagan

                          82.7k22227369




                          82.7k22227369










                          answered Dec 24 '11 at 16:28









                          Samus_Samus_

                          77257




                          77257





















                              23














                              Going off a few posts listed here it seems the simplest way to do it is:



                              string="|abcdefg|"
                              echo $string:1:-1


                              edit: works on ubuntu with bash 4.2; does not work on centOS with bash 4.1






                              share|improve this answer





























                                23














                                Going off a few posts listed here it seems the simplest way to do it is:



                                string="|abcdefg|"
                                echo $string:1:-1


                                edit: works on ubuntu with bash 4.2; does not work on centOS with bash 4.1






                                share|improve this answer



























                                  23












                                  23








                                  23







                                  Going off a few posts listed here it seems the simplest way to do it is:



                                  string="|abcdefg|"
                                  echo $string:1:-1


                                  edit: works on ubuntu with bash 4.2; does not work on centOS with bash 4.1






                                  share|improve this answer















                                  Going off a few posts listed here it seems the simplest way to do it is:



                                  string="|abcdefg|"
                                  echo $string:1:-1


                                  edit: works on ubuntu with bash 4.2; does not work on centOS with bash 4.1







                                  share|improve this answer














                                  share|improve this answer



                                  share|improve this answer








                                  edited Oct 16 '12 at 16:32

























                                  answered Sep 5 '12 at 20:37









                                  jlunavtgradjlunavtgrad

                                  33924




                                  33924





















                                      15














                                      Another way is to use head & tail commands:



                                      $ echo -n "|abcdefg|" | tail -c +2 | head -c -2
                                      abcdefg





                                      share|improve this answer




















                                      • 1





                                        I had a string of [something something] with a goal to cut brackets, so echo "[something something]" | tail -c +2 | head -c -2 worked out. Thanks for a tip!

                                        – Ain Tohvri
                                        Dec 13 '15 at 15:36















                                      15














                                      Another way is to use head & tail commands:



                                      $ echo -n "|abcdefg|" | tail -c +2 | head -c -2
                                      abcdefg





                                      share|improve this answer




















                                      • 1





                                        I had a string of [something something] with a goal to cut brackets, so echo "[something something]" | tail -c +2 | head -c -2 worked out. Thanks for a tip!

                                        – Ain Tohvri
                                        Dec 13 '15 at 15:36













                                      15












                                      15








                                      15







                                      Another way is to use head & tail commands:



                                      $ echo -n "|abcdefg|" | tail -c +2 | head -c -2
                                      abcdefg





                                      share|improve this answer















                                      Another way is to use head & tail commands:



                                      $ echo -n "|abcdefg|" | tail -c +2 | head -c -2
                                      abcdefg






                                      share|improve this answer














                                      share|improve this answer



                                      share|improve this answer








                                      edited Jan 11 at 21:26









                                      agabrys

                                      1034




                                      1034










                                      answered Nov 26 '13 at 16:16









                                      ZaviorZavior

                                      25124




                                      25124







                                      • 1





                                        I had a string of [something something] with a goal to cut brackets, so echo "[something something]" | tail -c +2 | head -c -2 worked out. Thanks for a tip!

                                        – Ain Tohvri
                                        Dec 13 '15 at 15:36












                                      • 1





                                        I had a string of [something something] with a goal to cut brackets, so echo "[something something]" | tail -c +2 | head -c -2 worked out. Thanks for a tip!

                                        – Ain Tohvri
                                        Dec 13 '15 at 15:36







                                      1




                                      1





                                      I had a string of [something something] with a goal to cut brackets, so echo "[something something]" | tail -c +2 | head -c -2 worked out. Thanks for a tip!

                                      – Ain Tohvri
                                      Dec 13 '15 at 15:36





                                      I had a string of [something something] with a goal to cut brackets, so echo "[something something]" | tail -c +2 | head -c -2 worked out. Thanks for a tip!

                                      – Ain Tohvri
                                      Dec 13 '15 at 15:36











                                      10














                                      And another one:



                                      string="|abcdefg|"
                                      echo "$string//"





                                      share|improve this answer





























                                        10














                                        And another one:



                                        string="|abcdefg|"
                                        echo "$string//"





                                        share|improve this answer



























                                          10












                                          10








                                          10







                                          And another one:



                                          string="|abcdefg|"
                                          echo "$string//"





                                          share|improve this answer















                                          And another one:



                                          string="|abcdefg|"
                                          echo "$string//"






                                          share|improve this answer














                                          share|improve this answer



                                          share|improve this answer








                                          edited Jul 18 '12 at 15:06

























                                          answered Jun 9 '12 at 1:03









                                          Steven PennySteven Penny

                                          1




                                          1





















                                              8














                                              You can also use sed to remove the | not just referencing the symbol itself but using positional references as in:



                                              $ echo "|abcdefg|" | sed 's:^.(.*).$:1:'
                                              abcdefg


                                              Where ':' are the delimiters (you can replace them with / or any character not in the query, any sign following the s will do it) Here ^ (caret) means at the beginning of the input string and $ (dollar) means at the end. The . (point) that it's after the caret and the one that it's before the dollar sign represents a single character. So in other words we are deleting the first and last characters.
                                              Take in mind this will delete any characters even if | it's not present in the string.



                                              EX:



                                              $ echo "abcdefg" | sed 's:^.(.*).$:1:'
                                              bcdef





                                              share|improve this answer



























                                                8














                                                You can also use sed to remove the | not just referencing the symbol itself but using positional references as in:



                                                $ echo "|abcdefg|" | sed 's:^.(.*).$:1:'
                                                abcdefg


                                                Where ':' are the delimiters (you can replace them with / or any character not in the query, any sign following the s will do it) Here ^ (caret) means at the beginning of the input string and $ (dollar) means at the end. The . (point) that it's after the caret and the one that it's before the dollar sign represents a single character. So in other words we are deleting the first and last characters.
                                                Take in mind this will delete any characters even if | it's not present in the string.



                                                EX:



                                                $ echo "abcdefg" | sed 's:^.(.*).$:1:'
                                                bcdef





                                                share|improve this answer

























                                                  8












                                                  8








                                                  8







                                                  You can also use sed to remove the | not just referencing the symbol itself but using positional references as in:



                                                  $ echo "|abcdefg|" | sed 's:^.(.*).$:1:'
                                                  abcdefg


                                                  Where ':' are the delimiters (you can replace them with / or any character not in the query, any sign following the s will do it) Here ^ (caret) means at the beginning of the input string and $ (dollar) means at the end. The . (point) that it's after the caret and the one that it's before the dollar sign represents a single character. So in other words we are deleting the first and last characters.
                                                  Take in mind this will delete any characters even if | it's not present in the string.



                                                  EX:



                                                  $ echo "abcdefg" | sed 's:^.(.*).$:1:'
                                                  bcdef





                                                  share|improve this answer













                                                  You can also use sed to remove the | not just referencing the symbol itself but using positional references as in:



                                                  $ echo "|abcdefg|" | sed 's:^.(.*).$:1:'
                                                  abcdefg


                                                  Where ':' are the delimiters (you can replace them with / or any character not in the query, any sign following the s will do it) Here ^ (caret) means at the beginning of the input string and $ (dollar) means at the end. The . (point) that it's after the caret and the one that it's before the dollar sign represents a single character. So in other words we are deleting the first and last characters.
                                                  Take in mind this will delete any characters even if | it's not present in the string.



                                                  EX:



                                                  $ echo "abcdefg" | sed 's:^.(.*).$:1:'
                                                  bcdef






                                                  share|improve this answer












                                                  share|improve this answer



                                                  share|improve this answer










                                                  answered Feb 8 '12 at 1:44









                                                  MetafanielMetafaniel

                                                  1893




                                                  1893





















                                                      2














                                                      shell function



                                                      A bit more verbose approach, but works on any sort of first and last character, doesn't have to be the same. Basic idea is that we are taking a variable, reading it character by character, and appending only those
                                                      we want to a new variable



                                                      Here's that whole idea formatted into a nice function



                                                      crop_string_ends() 


                                                      And here is that same function in action:



                                                      $> crop_string_ends "|abcdefg|" 
                                                      abcdefg
                                                      $> crop_string_ends "HelloWorld"
                                                      elloWorl


                                                      Python



                                                      >>> mystring="|abcdefg|"
                                                      >>> print(mystring[1:-1])
                                                      abcdefg


                                                      or on command line:



                                                      $ python -c 'import sys;print sys.stdin.read()[1:-2]' <<< "|abcdefg|" 
                                                      abcdefg


                                                      AWK



                                                      $ echo "|abcdefg|" | awk 'print substr($0,2,length($0)-2)' 
                                                      abcdefg


                                                      Ruby



                                                      $ ruby -ne 'print $_.split("|")[1]' <<< "|abcdefg|" 
                                                      abcdefg





                                                      share|improve this answer





























                                                        2














                                                        shell function



                                                        A bit more verbose approach, but works on any sort of first and last character, doesn't have to be the same. Basic idea is that we are taking a variable, reading it character by character, and appending only those
                                                        we want to a new variable



                                                        Here's that whole idea formatted into a nice function



                                                        crop_string_ends() 


                                                        And here is that same function in action:



                                                        $> crop_string_ends "|abcdefg|" 
                                                        abcdefg
                                                        $> crop_string_ends "HelloWorld"
                                                        elloWorl


                                                        Python



                                                        >>> mystring="|abcdefg|"
                                                        >>> print(mystring[1:-1])
                                                        abcdefg


                                                        or on command line:



                                                        $ python -c 'import sys;print sys.stdin.read()[1:-2]' <<< "|abcdefg|" 
                                                        abcdefg


                                                        AWK



                                                        $ echo "|abcdefg|" | awk 'print substr($0,2,length($0)-2)' 
                                                        abcdefg


                                                        Ruby



                                                        $ ruby -ne 'print $_.split("|")[1]' <<< "|abcdefg|" 
                                                        abcdefg





                                                        share|improve this answer



























                                                          2












                                                          2








                                                          2







                                                          shell function



                                                          A bit more verbose approach, but works on any sort of first and last character, doesn't have to be the same. Basic idea is that we are taking a variable, reading it character by character, and appending only those
                                                          we want to a new variable



                                                          Here's that whole idea formatted into a nice function



                                                          crop_string_ends() 


                                                          And here is that same function in action:



                                                          $> crop_string_ends "|abcdefg|" 
                                                          abcdefg
                                                          $> crop_string_ends "HelloWorld"
                                                          elloWorl


                                                          Python



                                                          >>> mystring="|abcdefg|"
                                                          >>> print(mystring[1:-1])
                                                          abcdefg


                                                          or on command line:



                                                          $ python -c 'import sys;print sys.stdin.read()[1:-2]' <<< "|abcdefg|" 
                                                          abcdefg


                                                          AWK



                                                          $ echo "|abcdefg|" | awk 'print substr($0,2,length($0)-2)' 
                                                          abcdefg


                                                          Ruby



                                                          $ ruby -ne 'print $_.split("|")[1]' <<< "|abcdefg|" 
                                                          abcdefg





                                                          share|improve this answer















                                                          shell function



                                                          A bit more verbose approach, but works on any sort of first and last character, doesn't have to be the same. Basic idea is that we are taking a variable, reading it character by character, and appending only those
                                                          we want to a new variable



                                                          Here's that whole idea formatted into a nice function



                                                          crop_string_ends() 


                                                          And here is that same function in action:



                                                          $> crop_string_ends "|abcdefg|" 
                                                          abcdefg
                                                          $> crop_string_ends "HelloWorld"
                                                          elloWorl


                                                          Python



                                                          >>> mystring="|abcdefg|"
                                                          >>> print(mystring[1:-1])
                                                          abcdefg


                                                          or on command line:



                                                          $ python -c 'import sys;print sys.stdin.read()[1:-2]' <<< "|abcdefg|" 
                                                          abcdefg


                                                          AWK



                                                          $ echo "|abcdefg|" | awk 'print substr($0,2,length($0)-2)' 
                                                          abcdefg


                                                          Ruby



                                                          $ ruby -ne 'print $_.split("|")[1]' <<< "|abcdefg|" 
                                                          abcdefg






                                                          share|improve this answer














                                                          share|improve this answer



                                                          share|improve this answer








                                                          edited Dec 24 '16 at 21:14

























                                                          answered Apr 6 '16 at 13:58









                                                          Sergiy KolodyazhnyySergiy Kolodyazhnyy

                                                          74.3k9155324




                                                          74.3k9155324





















                                                              1














                                                              Small and universal solution:



                                                              expr "|abcdef|" : '.(.*).'


                                                              Special in this case and allowing that the '|' character may be there or not:



                                                              expr "|abcdef" : '|*([^|]*)|*'





                                                              share|improve this answer





























                                                                1














                                                                Small and universal solution:



                                                                expr "|abcdef|" : '.(.*).'


                                                                Special in this case and allowing that the '|' character may be there or not:



                                                                expr "|abcdef" : '|*([^|]*)|*'





                                                                share|improve this answer



























                                                                  1












                                                                  1








                                                                  1







                                                                  Small and universal solution:



                                                                  expr "|abcdef|" : '.(.*).'


                                                                  Special in this case and allowing that the '|' character may be there or not:



                                                                  expr "|abcdef" : '|*([^|]*)|*'





                                                                  share|improve this answer















                                                                  Small and universal solution:



                                                                  expr "|abcdef|" : '.(.*).'


                                                                  Special in this case and allowing that the '|' character may be there or not:



                                                                  expr "|abcdef" : '|*([^|]*)|*'






                                                                  share|improve this answer














                                                                  share|improve this answer



                                                                  share|improve this answer








                                                                  edited Jul 8 '17 at 23:37

























                                                                  answered Jul 8 '17 at 23:29









                                                                  Tosi DoTosi Do

                                                                  112




                                                                  112



























                                                                      draft saved

                                                                      draft discarded
















































                                                                      Thanks for contributing an answer to Ask Ubuntu!


                                                                      • 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%2faskubuntu.com%2fquestions%2f89995%2fbash-remove-first-and-last-characters-from-a-string%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

                                                                      Möglingen Índice Localización Historia Demografía Referencias Enlaces externos Menú de navegación48°53′18″N 9°07′45″E / 48.888333333333, 9.129166666666748°53′18″N 9°07′45″E / 48.888333333333, 9.1291666666667Sitio web oficial Mapa de Möglingen«Gemeinden in Deutschland nach Fläche, Bevölkerung und Postleitzahl am 30.09.2016»Möglingen

                                                                      Virtualbox - Configuration error: Querying “UUID” failed (VERR_CFGM_VALUE_NOT_FOUND)“VERR_SUPLIB_WORLD_WRITABLE” error when trying to installing OS in virtualboxVirtual Box Kernel errorFailed to open a seesion for the virtual machineFailed to open a session for the virtual machineUbuntu 14.04 LTS Virtualbox errorcan't use VM VirtualBoxusing virtualboxI can't run Linux-64 Bit on VirtualBoxUnable to insert the virtual optical disk (VBoxguestaddition) in virtual machine for ubuntu server in win 10VirtuaBox in Ubuntu 18.04 Issues with Win10.ISO Installation

                                                                      Antonio De Lisio Carrera Referencias Menú de navegación«Caracas: evolución relacional multipleja»«Cuando los gobiernos subestiman a las localidades: L a Iniciativa para la Integración de la Infraestructura Regional Suramericana (IIRSA) en la frontera Colombo-Venezolana»«Maestría en Planificación Integral del Ambiente»«La Metrópoli Caraqueña: Expansión Simplificadora o Articulación Diversificante»«La Metrópoli Caraqueña: Expansión Simplificadora o Articulación Diversificante»«Conózcanos»«Caracas: evolución relacional multipleja»«La Metrópoli Caraqueña: Expansión Simplificadora o Articulación Diversificante»