insert EOF statement before the last line of filesed script to insert line after the last matching line in a...

Compress command output by piping to bzip2

Book where aliens are selecting humans for food consumption

Am I a Rude Number?

How can animals be objects of ethics without being subjects as well?

Help Me simplify: C*(A+B) + ~A*B

Does fast page mode apply to ROM?

Why zero tolerance on nudity in space?

Broken patches on a road

What's a good word to describe a public place that looks like it wouldn't be rough?

Parsing a string of key-value pairs as a dictionary

Isn't using the Extrusion Multiplier like cheating?

Are there neural networks with very few nodes that decently solve non-trivial problems?

Is there any differences between "Gucken" and "Schauen"?

Citing paywalled articles accessed via illegal web sharing

Quenching swords in dragon blood; why?

How should I handle players who ignore the session zero agreement?

Cryptic with missing capitals

Explain the objections to these measures against human trafficking

Checking for the existence of multiple directories

Program that converts a number to a letter of the alphabet

Disable the ">" operator in Rstudio linux terminal

Can I become debt free or should I file for bankruptcy? How do I manage my debt and finances?

A starship is travelling at 0.9c and collides with a small rock. Will it leave a clean hole through, or will more happen?

Why Smart Plugs don't require setting port forwarding on router and how to accomplish this with NodeMCU (ESP8266)



insert EOF statement before the last line of file


sed script to insert line after the last matching line in a fileSED: insert text after the last line?Delete last line from the fileHow to insert text after the last configuration line?Using sed, how to format one word per line, removing white spaceInsert a line before a certain line in a fileRemove the last character before another characterInsert newline before each line matching a pattern unless the previous line is already emptyInsert text N lines before the last lineSed Replace a pattern between a pattern and the end of file













2















I want to insert this



cat <<EOF >> /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
EOF


into the second to last line of the file, before the # End of file line.



I know I could use other methods to insert this statement without the use of EOF but for visual candy I wanted to maintain this format as well for readability.










share|improve this question









New contributor




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





















  • The method above just appends to file. So without a tool that can recognize the # End of file line there's probably no better way to make it work. Such tool would be either awk or sed. I'd recommend a 2 step process: delete the line via sed -i '/# End of file/d' and then insert the data you want with # End of file added to original cat command you have there, or via third step - echo '# End of file' >> /etc/security/limits.conf.

    – Sergiy Kolodyazhnyy
    22 mins ago











  • Let me know if you want that as an answer and not just comment

    – Sergiy Kolodyazhnyy
    21 mins ago
















2















I want to insert this



cat <<EOF >> /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
EOF


into the second to last line of the file, before the # End of file line.



I know I could use other methods to insert this statement without the use of EOF but for visual candy I wanted to maintain this format as well for readability.










share|improve this question









New contributor




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





















  • The method above just appends to file. So without a tool that can recognize the # End of file line there's probably no better way to make it work. Such tool would be either awk or sed. I'd recommend a 2 step process: delete the line via sed -i '/# End of file/d' and then insert the data you want with # End of file added to original cat command you have there, or via third step - echo '# End of file' >> /etc/security/limits.conf.

    – Sergiy Kolodyazhnyy
    22 mins ago











  • Let me know if you want that as an answer and not just comment

    – Sergiy Kolodyazhnyy
    21 mins ago














2












2








2








I want to insert this



cat <<EOF >> /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
EOF


into the second to last line of the file, before the # End of file line.



I know I could use other methods to insert this statement without the use of EOF but for visual candy I wanted to maintain this format as well for readability.










share|improve this question









New contributor




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












I want to insert this



cat <<EOF >> /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
EOF


into the second to last line of the file, before the # End of file line.



I know I could use other methods to insert this statement without the use of EOF but for visual candy I wanted to maintain this format as well for readability.







text-processing sed cat gnu






share|improve this question









New contributor




Eli 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




Eli 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 17 mins ago









Jeff Schaller

42.8k1159136




42.8k1159136






New contributor




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









asked 44 mins ago









EliEli

1134




1134




New contributor




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





New contributor





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






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













  • The method above just appends to file. So without a tool that can recognize the # End of file line there's probably no better way to make it work. Such tool would be either awk or sed. I'd recommend a 2 step process: delete the line via sed -i '/# End of file/d' and then insert the data you want with # End of file added to original cat command you have there, or via third step - echo '# End of file' >> /etc/security/limits.conf.

    – Sergiy Kolodyazhnyy
    22 mins ago











  • Let me know if you want that as an answer and not just comment

    – Sergiy Kolodyazhnyy
    21 mins ago



















  • The method above just appends to file. So without a tool that can recognize the # End of file line there's probably no better way to make it work. Such tool would be either awk or sed. I'd recommend a 2 step process: delete the line via sed -i '/# End of file/d' and then insert the data you want with # End of file added to original cat command you have there, or via third step - echo '# End of file' >> /etc/security/limits.conf.

    – Sergiy Kolodyazhnyy
    22 mins ago











  • Let me know if you want that as an answer and not just comment

    – Sergiy Kolodyazhnyy
    21 mins ago

















The method above just appends to file. So without a tool that can recognize the # End of file line there's probably no better way to make it work. Such tool would be either awk or sed. I'd recommend a 2 step process: delete the line via sed -i '/# End of file/d' and then insert the data you want with # End of file added to original cat command you have there, or via third step - echo '# End of file' >> /etc/security/limits.conf.

– Sergiy Kolodyazhnyy
22 mins ago





The method above just appends to file. So without a tool that can recognize the # End of file line there's probably no better way to make it work. Such tool would be either awk or sed. I'd recommend a 2 step process: delete the line via sed -i '/# End of file/d' and then insert the data you want with # End of file added to original cat command you have there, or via third step - echo '# End of file' >> /etc/security/limits.conf.

– Sergiy Kolodyazhnyy
22 mins ago













Let me know if you want that as an answer and not just comment

– Sergiy Kolodyazhnyy
21 mins ago





Let me know if you want that as an answer and not just comment

– Sergiy Kolodyazhnyy
21 mins ago










2 Answers
2






active

oldest

votes


















3














To keep the same sort of here-document format and to insert the given text immediately before the last line of the file, try ed!



ed -s /etc/security/limits.conf << EOF
$ i
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
.
wq
EOF


This sends a sequence of commands to ed, all in a here-document. We address the last line in the file with $ and say that we would like to insert some text. The text follows, just as in your example; once we're done with the inserted text, we tell ed we're done with a single period (.). Write the file back to disk and then quit.



If you wanted to collapse the $ i to $i you'd want to escape the dollar sign or use a quoted here-document (ed -s input << 'EOF' ...) to prevent $i from expanding to the current vale of the i variable or empty if there's no such variable set.






share|improve this answer































    4














    You can use ex (which is a mode of the vi editor) to accomplish this.



    You can use the :read command to insert the contents into the file. That command takes a filename, but you can use the /dev/stdin pseudo-device to read from standard input, which allows you to use a <<EOF marker.



    The :read command also takes a range, and you can use the $- symbol, which breaks down into $, which indicates the last line of the file, and - to subtract one from it, getting to the second to last line of the file. (You could use $-1 as well.)



    Putting it all together:



    $ ex -s /etc/security/limits.conf -c '$-r /dev/stdin' -c 'wq' <<EOF
    * soft nproc 65535
    * hard nproc 65535
    * soft nofile 65535
    * hard nofile 65535
    root soft nproc 65535
    root hard nproc 65535
    root soft nofile 65535
    root hard nofile 65535
    EOF


    The -s is to make it silent (not switch into visual mode, which would make the screen blink.) The $-r is abbreviated (a full $-1read would have worked as well) and finally the wq is how you write and quit in vi. :-)





    UPDATE: If instead of inserting before the last line, you want to insert before a line with specific contents (such as "# End of file"), then just use a /search/ pattern to do so.



    For example:



    $ ex -s /etc/security/limits.conf -c '/^# End of file/-1r /dev/stdin' -c 'wq' <<EOF
    ...
    EOF





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


      }
      });






      Eli 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%2f503902%2finsert-eof-statement-before-the-last-line-of-file%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









      3














      To keep the same sort of here-document format and to insert the given text immediately before the last line of the file, try ed!



      ed -s /etc/security/limits.conf << EOF
      $ i
      * soft nproc 65535
      * hard nproc 65535
      * soft nofile 65535
      * hard nofile 65535
      root soft nproc 65535
      root hard nproc 65535
      root soft nofile 65535
      root hard nofile 65535
      .
      wq
      EOF


      This sends a sequence of commands to ed, all in a here-document. We address the last line in the file with $ and say that we would like to insert some text. The text follows, just as in your example; once we're done with the inserted text, we tell ed we're done with a single period (.). Write the file back to disk and then quit.



      If you wanted to collapse the $ i to $i you'd want to escape the dollar sign or use a quoted here-document (ed -s input << 'EOF' ...) to prevent $i from expanding to the current vale of the i variable or empty if there's no such variable set.






      share|improve this answer




























        3














        To keep the same sort of here-document format and to insert the given text immediately before the last line of the file, try ed!



        ed -s /etc/security/limits.conf << EOF
        $ i
        * soft nproc 65535
        * hard nproc 65535
        * soft nofile 65535
        * hard nofile 65535
        root soft nproc 65535
        root hard nproc 65535
        root soft nofile 65535
        root hard nofile 65535
        .
        wq
        EOF


        This sends a sequence of commands to ed, all in a here-document. We address the last line in the file with $ and say that we would like to insert some text. The text follows, just as in your example; once we're done with the inserted text, we tell ed we're done with a single period (.). Write the file back to disk and then quit.



        If you wanted to collapse the $ i to $i you'd want to escape the dollar sign or use a quoted here-document (ed -s input << 'EOF' ...) to prevent $i from expanding to the current vale of the i variable or empty if there's no such variable set.






        share|improve this answer


























          3












          3








          3







          To keep the same sort of here-document format and to insert the given text immediately before the last line of the file, try ed!



          ed -s /etc/security/limits.conf << EOF
          $ i
          * soft nproc 65535
          * hard nproc 65535
          * soft nofile 65535
          * hard nofile 65535
          root soft nproc 65535
          root hard nproc 65535
          root soft nofile 65535
          root hard nofile 65535
          .
          wq
          EOF


          This sends a sequence of commands to ed, all in a here-document. We address the last line in the file with $ and say that we would like to insert some text. The text follows, just as in your example; once we're done with the inserted text, we tell ed we're done with a single period (.). Write the file back to disk and then quit.



          If you wanted to collapse the $ i to $i you'd want to escape the dollar sign or use a quoted here-document (ed -s input << 'EOF' ...) to prevent $i from expanding to the current vale of the i variable or empty if there's no such variable set.






          share|improve this answer













          To keep the same sort of here-document format and to insert the given text immediately before the last line of the file, try ed!



          ed -s /etc/security/limits.conf << EOF
          $ i
          * soft nproc 65535
          * hard nproc 65535
          * soft nofile 65535
          * hard nofile 65535
          root soft nproc 65535
          root hard nproc 65535
          root soft nofile 65535
          root hard nofile 65535
          .
          wq
          EOF


          This sends a sequence of commands to ed, all in a here-document. We address the last line in the file with $ and say that we would like to insert some text. The text follows, just as in your example; once we're done with the inserted text, we tell ed we're done with a single period (.). Write the file back to disk and then quit.



          If you wanted to collapse the $ i to $i you'd want to escape the dollar sign or use a quoted here-document (ed -s input << 'EOF' ...) to prevent $i from expanding to the current vale of the i variable or empty if there's no such variable set.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 19 mins ago









          Jeff SchallerJeff Schaller

          42.8k1159136




          42.8k1159136

























              4














              You can use ex (which is a mode of the vi editor) to accomplish this.



              You can use the :read command to insert the contents into the file. That command takes a filename, but you can use the /dev/stdin pseudo-device to read from standard input, which allows you to use a <<EOF marker.



              The :read command also takes a range, and you can use the $- symbol, which breaks down into $, which indicates the last line of the file, and - to subtract one from it, getting to the second to last line of the file. (You could use $-1 as well.)



              Putting it all together:



              $ ex -s /etc/security/limits.conf -c '$-r /dev/stdin' -c 'wq' <<EOF
              * soft nproc 65535
              * hard nproc 65535
              * soft nofile 65535
              * hard nofile 65535
              root soft nproc 65535
              root hard nproc 65535
              root soft nofile 65535
              root hard nofile 65535
              EOF


              The -s is to make it silent (not switch into visual mode, which would make the screen blink.) The $-r is abbreviated (a full $-1read would have worked as well) and finally the wq is how you write and quit in vi. :-)





              UPDATE: If instead of inserting before the last line, you want to insert before a line with specific contents (such as "# End of file"), then just use a /search/ pattern to do so.



              For example:



              $ ex -s /etc/security/limits.conf -c '/^# End of file/-1r /dev/stdin' -c 'wq' <<EOF
              ...
              EOF





              share|improve this answer






























                4














                You can use ex (which is a mode of the vi editor) to accomplish this.



                You can use the :read command to insert the contents into the file. That command takes a filename, but you can use the /dev/stdin pseudo-device to read from standard input, which allows you to use a <<EOF marker.



                The :read command also takes a range, and you can use the $- symbol, which breaks down into $, which indicates the last line of the file, and - to subtract one from it, getting to the second to last line of the file. (You could use $-1 as well.)



                Putting it all together:



                $ ex -s /etc/security/limits.conf -c '$-r /dev/stdin' -c 'wq' <<EOF
                * soft nproc 65535
                * hard nproc 65535
                * soft nofile 65535
                * hard nofile 65535
                root soft nproc 65535
                root hard nproc 65535
                root soft nofile 65535
                root hard nofile 65535
                EOF


                The -s is to make it silent (not switch into visual mode, which would make the screen blink.) The $-r is abbreviated (a full $-1read would have worked as well) and finally the wq is how you write and quit in vi. :-)





                UPDATE: If instead of inserting before the last line, you want to insert before a line with specific contents (such as "# End of file"), then just use a /search/ pattern to do so.



                For example:



                $ ex -s /etc/security/limits.conf -c '/^# End of file/-1r /dev/stdin' -c 'wq' <<EOF
                ...
                EOF





                share|improve this answer




























                  4












                  4








                  4







                  You can use ex (which is a mode of the vi editor) to accomplish this.



                  You can use the :read command to insert the contents into the file. That command takes a filename, but you can use the /dev/stdin pseudo-device to read from standard input, which allows you to use a <<EOF marker.



                  The :read command also takes a range, and you can use the $- symbol, which breaks down into $, which indicates the last line of the file, and - to subtract one from it, getting to the second to last line of the file. (You could use $-1 as well.)



                  Putting it all together:



                  $ ex -s /etc/security/limits.conf -c '$-r /dev/stdin' -c 'wq' <<EOF
                  * soft nproc 65535
                  * hard nproc 65535
                  * soft nofile 65535
                  * hard nofile 65535
                  root soft nproc 65535
                  root hard nproc 65535
                  root soft nofile 65535
                  root hard nofile 65535
                  EOF


                  The -s is to make it silent (not switch into visual mode, which would make the screen blink.) The $-r is abbreviated (a full $-1read would have worked as well) and finally the wq is how you write and quit in vi. :-)





                  UPDATE: If instead of inserting before the last line, you want to insert before a line with specific contents (such as "# End of file"), then just use a /search/ pattern to do so.



                  For example:



                  $ ex -s /etc/security/limits.conf -c '/^# End of file/-1r /dev/stdin' -c 'wq' <<EOF
                  ...
                  EOF





                  share|improve this answer















                  You can use ex (which is a mode of the vi editor) to accomplish this.



                  You can use the :read command to insert the contents into the file. That command takes a filename, but you can use the /dev/stdin pseudo-device to read from standard input, which allows you to use a <<EOF marker.



                  The :read command also takes a range, and you can use the $- symbol, which breaks down into $, which indicates the last line of the file, and - to subtract one from it, getting to the second to last line of the file. (You could use $-1 as well.)



                  Putting it all together:



                  $ ex -s /etc/security/limits.conf -c '$-r /dev/stdin' -c 'wq' <<EOF
                  * soft nproc 65535
                  * hard nproc 65535
                  * soft nofile 65535
                  * hard nofile 65535
                  root soft nproc 65535
                  root hard nproc 65535
                  root soft nofile 65535
                  root hard nofile 65535
                  EOF


                  The -s is to make it silent (not switch into visual mode, which would make the screen blink.) The $-r is abbreviated (a full $-1read would have worked as well) and finally the wq is how you write and quit in vi. :-)





                  UPDATE: If instead of inserting before the last line, you want to insert before a line with specific contents (such as "# End of file"), then just use a /search/ pattern to do so.



                  For example:



                  $ ex -s /etc/security/limits.conf -c '/^# End of file/-1r /dev/stdin' -c 'wq' <<EOF
                  ...
                  EOF






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited 2 mins ago

























                  answered 21 mins ago









                  filbrandenfilbranden

                  10k21645




                  10k21645






















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










                      draft saved

                      draft discarded


















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













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












                      Eli 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%2f503902%2finsert-eof-statement-before-the-last-line-of-file%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

                      Benedict Cumberbatch Contingut Inicis Debut professional Premis Filmografia bàsica Premis i...

                      Monticle de plataforma Contingut Est de Nord Amèrica Interpretacions Altres cultures Vegeu...

                      Escacs Janus Enllaços externs Menú de navegacióEscacs JanusJanusschachBrainKing.comChessV