How to split a string in two substrings of same length using bash?How to split a string into an array in bashBash Combine Replacement and Sub String Extraction in One StepPiping bash string manipulationBash - Split quoted parametersSplit single string into character array using ONLY bashPrint month between two wordsSplit a string by some separator in bash?Cut the string in half with the last specific character shows up in the stringbash command to print string in unambiguous formsplit string to two parts using sed or awk or perl or bash

Is it possible to have a wealthy country without a middle class?

What's up with this leaf?

How did old MS-DOS games utilize various graphic cards?

SQL counting distinct over partition

Does the Long March-11 increase its thrust after clearing the launch tower?

Did Milano or Benatar approve or comment on their namesake MCU ships?

Non-disclosure agreement in a small business

English word for "product of tinkering"

Is this use of the expression "long past" correct?

How to handle self harm scars on the arm in work environment?

Someone whose aspirations exceed abilities or means

Second (easy access) account in case my bank screws up

What speaks against investing in precious metals?

Union with anonymous struct with flexible array member

What can I, as a user, do about offensive reviews in App Store?

Are there any important biographies of nobodies?

Using "subway" as name for London Underground?

1980s live-action movie where individually-coloured nations on clouds fight

Need feedback - Can the composition/colors of this design be fixed if something is lacking or is not a better fit?

How can I get an unreasonable manager to approve time off?

How do I prevent employees from either switching to competitors or opening their own business?

Is it possible to have the age of the universe be unknown?

Is using haveibeenpwned to validate password strength rational?

is it possible for a vehicle to be manufactured witout a catalitic converter



How to split a string in two substrings of same length using bash?


How to split a string into an array in bashBash Combine Replacement and Sub String Extraction in One StepPiping bash string manipulationBash - Split quoted parametersSplit single string into character array using ONLY bashPrint month between two wordsSplit a string by some separator in bash?Cut the string in half with the last specific character shows up in the stringbash command to print string in unambiguous formsplit string to two parts using sed or awk or perl or bash






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








12















I would like to split a string into two halves and print them sequentially. For example:



abcdef


into



abc
def


Is there a simple way to do it, or it needs some string processing?










share|improve this question









New contributor



Gabriel Diego is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



















  • How do you have the incoming string? Variable? Stdin? Other?

    – Jeff Schaller
    May 30 at 21:24






  • 1





    In a variable. It doesn't really matter, as anything can be worked out (stdin input can be put in a variable).

    – Gabriel Diego
    May 30 at 21:27











  • It matters for efficiency, especially if it can be possibly-gigantic. And also for convenience.

    – Peter Cordes
    May 31 at 10:36


















12















I would like to split a string into two halves and print them sequentially. For example:



abcdef


into



abc
def


Is there a simple way to do it, or it needs some string processing?










share|improve this question









New contributor



Gabriel Diego is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



















  • How do you have the incoming string? Variable? Stdin? Other?

    – Jeff Schaller
    May 30 at 21:24






  • 1





    In a variable. It doesn't really matter, as anything can be worked out (stdin input can be put in a variable).

    – Gabriel Diego
    May 30 at 21:27











  • It matters for efficiency, especially if it can be possibly-gigantic. And also for convenience.

    – Peter Cordes
    May 31 at 10:36














12












12








12








I would like to split a string into two halves and print them sequentially. For example:



abcdef


into



abc
def


Is there a simple way to do it, or it needs some string processing?










share|improve this question









New contributor



Gabriel Diego is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











I would like to split a string into two halves and print them sequentially. For example:



abcdef


into



abc
def


Is there a simple way to do it, or it needs some string processing?







bash string






share|improve this question









New contributor



Gabriel Diego is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.










share|improve this question









New contributor



Gabriel Diego is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








share|improve this question




share|improve this question








edited May 30 at 21:23









Jeff Schaller

46.4k1166150




46.4k1166150






New contributor



Gabriel Diego is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








asked May 30 at 21:11









Gabriel DiegoGabriel Diego

1665




1665




New contributor



Gabriel Diego is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




New contributor




Gabriel Diego is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.














  • How do you have the incoming string? Variable? Stdin? Other?

    – Jeff Schaller
    May 30 at 21:24






  • 1





    In a variable. It doesn't really matter, as anything can be worked out (stdin input can be put in a variable).

    – Gabriel Diego
    May 30 at 21:27











  • It matters for efficiency, especially if it can be possibly-gigantic. And also for convenience.

    – Peter Cordes
    May 31 at 10:36


















  • How do you have the incoming string? Variable? Stdin? Other?

    – Jeff Schaller
    May 30 at 21:24






  • 1





    In a variable. It doesn't really matter, as anything can be worked out (stdin input can be put in a variable).

    – Gabriel Diego
    May 30 at 21:27











  • It matters for efficiency, especially if it can be possibly-gigantic. And also for convenience.

    – Peter Cordes
    May 31 at 10:36

















How do you have the incoming string? Variable? Stdin? Other?

– Jeff Schaller
May 30 at 21:24





How do you have the incoming string? Variable? Stdin? Other?

– Jeff Schaller
May 30 at 21:24




1




1





In a variable. It doesn't really matter, as anything can be worked out (stdin input can be put in a variable).

– Gabriel Diego
May 30 at 21:27





In a variable. It doesn't really matter, as anything can be worked out (stdin input can be put in a variable).

– Gabriel Diego
May 30 at 21:27













It matters for efficiency, especially if it can be possibly-gigantic. And also for convenience.

– Peter Cordes
May 31 at 10:36






It matters for efficiency, especially if it can be possibly-gigantic. And also for convenience.

– Peter Cordes
May 31 at 10:36











4 Answers
4






active

oldest

votes


















16














Using parameter expansion and shell arithmetic:



The first half of the variable will be:



$var:0:$#var/2


The second half of the variable will be:



$var:$#var/2



so you could use:



printf '%sn' "$var:0:$#var/2" "$var:$#var/2"



You could also use the following awk command:



awk 'BEGINFS=""for(i=1;i<=NF/2;i++)printf $iprintf "n"for(i=NF/2+1;i<=NF;i++)printf $iprintf "n"'



$ echo abcdef | awk 'BEGINFS=""for(i=1;i<=NF/2;i++)printf $iprintf "n"for(i=NF/2+1;i<=NF;i++)printf $iprintf "n"'
abc
def





share|improve this answer

























  • Thanks for the response!

    – Gabriel Diego
    May 30 at 21:19











  • concise and elegant solution.

    – Dudi Boy
    May 30 at 21:32






  • 3





    You can get rid of the $((...)); the off and len part of the $var:off:len substitution are already evaluated as arithmetic expressions. Example: foo=01234567; echo "$foo:0:$#foo/2 $foo:$#foo/2". That's documented, and it's the same in zsh and ksh93 as in bash.

    – mosvy
    May 30 at 21:47






  • 3





    Note: If the length of the string is odd, this will still split it into two parts, but the second will be a character longer.

    – peterh
    May 31 at 7:39


















8














Using split, here strings and command substitution:



var=abcdef
printf '%sn' "$(split -n1/2 <<<$var)" "$(split -n2/2 <<<$var)"





share|improve this answer






























    7














    Another awk script can be:



    echo abcdef | awk 'print substr($0,1,length/2); print substr($0,length/2+1)'





    share|improve this answer


















    • 1





      Note that it doesn't work with mawk or busybox awk because of the syntax ambiguity of division / and the /ERE/ operator, and the special case of () being optional for length (still those implementations are not POSIX compliant in that case). Using length() or length($0) here instead of length would help for those. You could also do awk 'BEGINhalf = int(length(ARGV[1]) / 2); print substr(ARGV[1], 1, half) ORS substr(ARGV[1], half+1)' abcdef which would save the pipe and extra process and make it work even if the string contains newline characters.

      – Stéphane Chazelas
      May 31 at 10:55



















    1














    Python 3



    s = input() # Take one line of input from stdin.
    x = len(s) // 2 # Get middle of string. "//" is floor division
    print(s[:x], s[x:], sep="n") # Print "s" up to "x", then "s" past "x", joined on newlines.


    For example,



    $ echo abcdef | python3 -c 's = input(); x = len(s) // 2; print(s[:x], s[x:], sep="n")'
    abc
    def


    If the string length is not an even number, the second line will be longer. E.g.



    $ echo abcdefg | python3 -c 's = input(); x= len(s) // 2; print(s[:x], s[x:], sep="n")'
    abc
    defg





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



      );






      Gabriel Diego is a new contributor. Be nice, and check out our Code of Conduct.









      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f522052%2fhow-to-split-a-string-in-two-substrings-of-same-length-using-bash%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      4 Answers
      4






      active

      oldest

      votes








      4 Answers
      4






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      16














      Using parameter expansion and shell arithmetic:



      The first half of the variable will be:



      $var:0:$#var/2


      The second half of the variable will be:



      $var:$#var/2



      so you could use:



      printf '%sn' "$var:0:$#var/2" "$var:$#var/2"



      You could also use the following awk command:



      awk 'BEGINFS=""for(i=1;i<=NF/2;i++)printf $iprintf "n"for(i=NF/2+1;i<=NF;i++)printf $iprintf "n"'



      $ echo abcdef | awk 'BEGINFS=""for(i=1;i<=NF/2;i++)printf $iprintf "n"for(i=NF/2+1;i<=NF;i++)printf $iprintf "n"'
      abc
      def





      share|improve this answer

























      • Thanks for the response!

        – Gabriel Diego
        May 30 at 21:19











      • concise and elegant solution.

        – Dudi Boy
        May 30 at 21:32






      • 3





        You can get rid of the $((...)); the off and len part of the $var:off:len substitution are already evaluated as arithmetic expressions. Example: foo=01234567; echo "$foo:0:$#foo/2 $foo:$#foo/2". That's documented, and it's the same in zsh and ksh93 as in bash.

        – mosvy
        May 30 at 21:47






      • 3





        Note: If the length of the string is odd, this will still split it into two parts, but the second will be a character longer.

        – peterh
        May 31 at 7:39















      16














      Using parameter expansion and shell arithmetic:



      The first half of the variable will be:



      $var:0:$#var/2


      The second half of the variable will be:



      $var:$#var/2



      so you could use:



      printf '%sn' "$var:0:$#var/2" "$var:$#var/2"



      You could also use the following awk command:



      awk 'BEGINFS=""for(i=1;i<=NF/2;i++)printf $iprintf "n"for(i=NF/2+1;i<=NF;i++)printf $iprintf "n"'



      $ echo abcdef | awk 'BEGINFS=""for(i=1;i<=NF/2;i++)printf $iprintf "n"for(i=NF/2+1;i<=NF;i++)printf $iprintf "n"'
      abc
      def





      share|improve this answer

























      • Thanks for the response!

        – Gabriel Diego
        May 30 at 21:19











      • concise and elegant solution.

        – Dudi Boy
        May 30 at 21:32






      • 3





        You can get rid of the $((...)); the off and len part of the $var:off:len substitution are already evaluated as arithmetic expressions. Example: foo=01234567; echo "$foo:0:$#foo/2 $foo:$#foo/2". That's documented, and it's the same in zsh and ksh93 as in bash.

        – mosvy
        May 30 at 21:47






      • 3





        Note: If the length of the string is odd, this will still split it into two parts, but the second will be a character longer.

        – peterh
        May 31 at 7:39













      16












      16








      16







      Using parameter expansion and shell arithmetic:



      The first half of the variable will be:



      $var:0:$#var/2


      The second half of the variable will be:



      $var:$#var/2



      so you could use:



      printf '%sn' "$var:0:$#var/2" "$var:$#var/2"



      You could also use the following awk command:



      awk 'BEGINFS=""for(i=1;i<=NF/2;i++)printf $iprintf "n"for(i=NF/2+1;i<=NF;i++)printf $iprintf "n"'



      $ echo abcdef | awk 'BEGINFS=""for(i=1;i<=NF/2;i++)printf $iprintf "n"for(i=NF/2+1;i<=NF;i++)printf $iprintf "n"'
      abc
      def





      share|improve this answer















      Using parameter expansion and shell arithmetic:



      The first half of the variable will be:



      $var:0:$#var/2


      The second half of the variable will be:



      $var:$#var/2



      so you could use:



      printf '%sn' "$var:0:$#var/2" "$var:$#var/2"



      You could also use the following awk command:



      awk 'BEGINFS=""for(i=1;i<=NF/2;i++)printf $iprintf "n"for(i=NF/2+1;i<=NF;i++)printf $iprintf "n"'



      $ echo abcdef | awk 'BEGINFS=""for(i=1;i<=NF/2;i++)printf $iprintf "n"for(i=NF/2+1;i<=NF;i++)printf $iprintf "n"'
      abc
      def






      share|improve this answer














      share|improve this answer



      share|improve this answer








      edited May 30 at 22:07

























      answered May 30 at 21:18









      Jesse_bJesse_b

      16.1k34078




      16.1k34078












      • Thanks for the response!

        – Gabriel Diego
        May 30 at 21:19











      • concise and elegant solution.

        – Dudi Boy
        May 30 at 21:32






      • 3





        You can get rid of the $((...)); the off and len part of the $var:off:len substitution are already evaluated as arithmetic expressions. Example: foo=01234567; echo "$foo:0:$#foo/2 $foo:$#foo/2". That's documented, and it's the same in zsh and ksh93 as in bash.

        – mosvy
        May 30 at 21:47






      • 3





        Note: If the length of the string is odd, this will still split it into two parts, but the second will be a character longer.

        – peterh
        May 31 at 7:39

















      • Thanks for the response!

        – Gabriel Diego
        May 30 at 21:19











      • concise and elegant solution.

        – Dudi Boy
        May 30 at 21:32






      • 3





        You can get rid of the $((...)); the off and len part of the $var:off:len substitution are already evaluated as arithmetic expressions. Example: foo=01234567; echo "$foo:0:$#foo/2 $foo:$#foo/2". That's documented, and it's the same in zsh and ksh93 as in bash.

        – mosvy
        May 30 at 21:47






      • 3





        Note: If the length of the string is odd, this will still split it into two parts, but the second will be a character longer.

        – peterh
        May 31 at 7:39
















      Thanks for the response!

      – Gabriel Diego
      May 30 at 21:19





      Thanks for the response!

      – Gabriel Diego
      May 30 at 21:19













      concise and elegant solution.

      – Dudi Boy
      May 30 at 21:32





      concise and elegant solution.

      – Dudi Boy
      May 30 at 21:32




      3




      3





      You can get rid of the $((...)); the off and len part of the $var:off:len substitution are already evaluated as arithmetic expressions. Example: foo=01234567; echo "$foo:0:$#foo/2 $foo:$#foo/2". That's documented, and it's the same in zsh and ksh93 as in bash.

      – mosvy
      May 30 at 21:47





      You can get rid of the $((...)); the off and len part of the $var:off:len substitution are already evaluated as arithmetic expressions. Example: foo=01234567; echo "$foo:0:$#foo/2 $foo:$#foo/2". That's documented, and it's the same in zsh and ksh93 as in bash.

      – mosvy
      May 30 at 21:47




      3




      3





      Note: If the length of the string is odd, this will still split it into two parts, but the second will be a character longer.

      – peterh
      May 31 at 7:39





      Note: If the length of the string is odd, this will still split it into two parts, but the second will be a character longer.

      – peterh
      May 31 at 7:39













      8














      Using split, here strings and command substitution:



      var=abcdef
      printf '%sn' "$(split -n1/2 <<<$var)" "$(split -n2/2 <<<$var)"





      share|improve this answer



























        8














        Using split, here strings and command substitution:



        var=abcdef
        printf '%sn' "$(split -n1/2 <<<$var)" "$(split -n2/2 <<<$var)"





        share|improve this answer

























          8












          8








          8







          Using split, here strings and command substitution:



          var=abcdef
          printf '%sn' "$(split -n1/2 <<<$var)" "$(split -n2/2 <<<$var)"





          share|improve this answer













          Using split, here strings and command substitution:



          var=abcdef
          printf '%sn' "$(split -n1/2 <<<$var)" "$(split -n2/2 <<<$var)"






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered May 30 at 21:42









          FreddyFreddy

          4,1431419




          4,1431419





















              7














              Another awk script can be:



              echo abcdef | awk 'print substr($0,1,length/2); print substr($0,length/2+1)'





              share|improve this answer


















              • 1





                Note that it doesn't work with mawk or busybox awk because of the syntax ambiguity of division / and the /ERE/ operator, and the special case of () being optional for length (still those implementations are not POSIX compliant in that case). Using length() or length($0) here instead of length would help for those. You could also do awk 'BEGINhalf = int(length(ARGV[1]) / 2); print substr(ARGV[1], 1, half) ORS substr(ARGV[1], half+1)' abcdef which would save the pipe and extra process and make it work even if the string contains newline characters.

                – Stéphane Chazelas
                May 31 at 10:55
















              7














              Another awk script can be:



              echo abcdef | awk 'print substr($0,1,length/2); print substr($0,length/2+1)'





              share|improve this answer


















              • 1





                Note that it doesn't work with mawk or busybox awk because of the syntax ambiguity of division / and the /ERE/ operator, and the special case of () being optional for length (still those implementations are not POSIX compliant in that case). Using length() or length($0) here instead of length would help for those. You could also do awk 'BEGINhalf = int(length(ARGV[1]) / 2); print substr(ARGV[1], 1, half) ORS substr(ARGV[1], half+1)' abcdef which would save the pipe and extra process and make it work even if the string contains newline characters.

                – Stéphane Chazelas
                May 31 at 10:55














              7












              7








              7







              Another awk script can be:



              echo abcdef | awk 'print substr($0,1,length/2); print substr($0,length/2+1)'





              share|improve this answer













              Another awk script can be:



              echo abcdef | awk 'print substr($0,1,length/2); print substr($0,length/2+1)'






              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered May 30 at 21:37









              Dudi BoyDudi Boy

              37127




              37127







              • 1





                Note that it doesn't work with mawk or busybox awk because of the syntax ambiguity of division / and the /ERE/ operator, and the special case of () being optional for length (still those implementations are not POSIX compliant in that case). Using length() or length($0) here instead of length would help for those. You could also do awk 'BEGINhalf = int(length(ARGV[1]) / 2); print substr(ARGV[1], 1, half) ORS substr(ARGV[1], half+1)' abcdef which would save the pipe and extra process and make it work even if the string contains newline characters.

                – Stéphane Chazelas
                May 31 at 10:55













              • 1





                Note that it doesn't work with mawk or busybox awk because of the syntax ambiguity of division / and the /ERE/ operator, and the special case of () being optional for length (still those implementations are not POSIX compliant in that case). Using length() or length($0) here instead of length would help for those. You could also do awk 'BEGINhalf = int(length(ARGV[1]) / 2); print substr(ARGV[1], 1, half) ORS substr(ARGV[1], half+1)' abcdef which would save the pipe and extra process and make it work even if the string contains newline characters.

                – Stéphane Chazelas
                May 31 at 10:55








              1




              1





              Note that it doesn't work with mawk or busybox awk because of the syntax ambiguity of division / and the /ERE/ operator, and the special case of () being optional for length (still those implementations are not POSIX compliant in that case). Using length() or length($0) here instead of length would help for those. You could also do awk 'BEGINhalf = int(length(ARGV[1]) / 2); print substr(ARGV[1], 1, half) ORS substr(ARGV[1], half+1)' abcdef which would save the pipe and extra process and make it work even if the string contains newline characters.

              – Stéphane Chazelas
              May 31 at 10:55






              Note that it doesn't work with mawk or busybox awk because of the syntax ambiguity of division / and the /ERE/ operator, and the special case of () being optional for length (still those implementations are not POSIX compliant in that case). Using length() or length($0) here instead of length would help for those. You could also do awk 'BEGINhalf = int(length(ARGV[1]) / 2); print substr(ARGV[1], 1, half) ORS substr(ARGV[1], half+1)' abcdef which would save the pipe and extra process and make it work even if the string contains newline characters.

              – Stéphane Chazelas
              May 31 at 10:55












              1














              Python 3



              s = input() # Take one line of input from stdin.
              x = len(s) // 2 # Get middle of string. "//" is floor division
              print(s[:x], s[x:], sep="n") # Print "s" up to "x", then "s" past "x", joined on newlines.


              For example,



              $ echo abcdef | python3 -c 's = input(); x = len(s) // 2; print(s[:x], s[x:], sep="n")'
              abc
              def


              If the string length is not an even number, the second line will be longer. E.g.



              $ echo abcdefg | python3 -c 's = input(); x= len(s) // 2; print(s[:x], s[x:], sep="n")'
              abc
              defg





              share|improve this answer





























                1














                Python 3



                s = input() # Take one line of input from stdin.
                x = len(s) // 2 # Get middle of string. "//" is floor division
                print(s[:x], s[x:], sep="n") # Print "s" up to "x", then "s" past "x", joined on newlines.


                For example,



                $ echo abcdef | python3 -c 's = input(); x = len(s) // 2; print(s[:x], s[x:], sep="n")'
                abc
                def


                If the string length is not an even number, the second line will be longer. E.g.



                $ echo abcdefg | python3 -c 's = input(); x= len(s) // 2; print(s[:x], s[x:], sep="n")'
                abc
                defg





                share|improve this answer



























                  1












                  1








                  1







                  Python 3



                  s = input() # Take one line of input from stdin.
                  x = len(s) // 2 # Get middle of string. "//" is floor division
                  print(s[:x], s[x:], sep="n") # Print "s" up to "x", then "s" past "x", joined on newlines.


                  For example,



                  $ echo abcdef | python3 -c 's = input(); x = len(s) // 2; print(s[:x], s[x:], sep="n")'
                  abc
                  def


                  If the string length is not an even number, the second line will be longer. E.g.



                  $ echo abcdefg | python3 -c 's = input(); x= len(s) // 2; print(s[:x], s[x:], sep="n")'
                  abc
                  defg





                  share|improve this answer















                  Python 3



                  s = input() # Take one line of input from stdin.
                  x = len(s) // 2 # Get middle of string. "//" is floor division
                  print(s[:x], s[x:], sep="n") # Print "s" up to "x", then "s" past "x", joined on newlines.


                  For example,



                  $ echo abcdef | python3 -c 's = input(); x = len(s) // 2; print(s[:x], s[x:], sep="n")'
                  abc
                  def


                  If the string length is not an even number, the second line will be longer. E.g.



                  $ echo abcdefg | python3 -c 's = input(); x= len(s) // 2; print(s[:x], s[x:], sep="n")'
                  abc
                  defg






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited May 31 at 14:07

























                  answered May 31 at 14:02









                  wjandreawjandrea

                  588414




                  588414




















                      Gabriel Diego is a new contributor. Be nice, and check out our Code of Conduct.









                      draft saved

                      draft discarded


















                      Gabriel Diego is a new contributor. Be nice, and check out our Code of Conduct.












                      Gabriel Diego is a new contributor. Be nice, and check out our Code of Conduct.











                      Gabriel Diego is a new contributor. Be nice, and check out our Code of Conduct.














                      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%2f522052%2fhow-to-split-a-string-in-two-substrings-of-same-length-using-bash%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

                      Category:9 (number) SubcategoriesMedia in category "9 (number)"Navigation menuUpload mediaGND ID: 4485639-8Library of Congress authority ID: sh85091979ReasonatorScholiaStatistics

                      Circuit construction for execution of conditional statements using least significant bitHow are two different registers being used as “control”?How exactly is the stated composite state of the two registers being produced using the $R_zz$ controlled rotations?Efficiently performing controlled rotations in HHLWould this quantum algorithm implementation work?How to prepare a superposed states of odd integers from $1$ to $sqrtN$?Why is this implementation of the order finding algorithm not working?Circuit construction for Hamiltonian simulationHow can I invert the least significant bit of a certain term of a superposed state?Implementing an oracleImplementing a controlled sum operation

                      Magento 2 “No Payment Methods” in Admin New OrderHow to integrate Paypal Express Checkout with the Magento APIMagento 1.5 - Sales > Order > edit order and shipping methods disappearAuto Invoice Check/Money Order Payment methodAdd more simple payment methods?Shipping methods not showingWhat should I do to change payment methods if changing the configuration has no effects?1.9 - No Payment Methods showing upMy Payment Methods not Showing for downloadable/virtual product when checkout?Magento2 API to access internal payment methodHow to call an existing payment methods in the registration form?