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

How would one buy a used TIE Fighter or X-Wing?

How to tag distinct options/entities without giving any an implicit priority or suggested order?

What is the in-universe cost of a TIE fighter?

Every character has a name - does this lead to too many named characters?

Parsing a string of key-value pairs as a dictionary

Explain the objections to these measures against human trafficking

Would these multi-classing house rules cause unintended problems?

How to deal with an incendiary email that was recalled

Is a debit card dangerous for an account with low balance and no overdraft protection?

What creature do these Alchemical Homunculus actions target?

Would a National Army of mercenaries be a feasible idea?

How would a Dictatorship make a country more successful?

Book where aliens are selecting humans for food consumption

Do authors have to be politically correct in article-writing?

We are very unlucky in my court

Solving Fredholm Equation of the second kind

Can we use the stored gravitational potential energy of a building to produce power?

Show that the following sequence converges. Please Critique my proof.

It took me a lot of time to make this, pls like. (YouTube Comments #1)

What kind of hardware implements Fourier transform?

How to explain planetary rings pulsating?

How do I say "Brexit" in Latin?

What is the purpose of easy combat scenarios that don't need resource expenditure?

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



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?Using sed, how to format one word per line, removing white spaceremoving the last line of a file not working?insert patterns into text file after the last lineExpand Environment Variable from PIPE (SHELL)SED: insert something after the second last line?Using /dev/stdin and a heredoc to pass a file from the command lineInsert 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
    11 mins ago











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

    – Sergiy Kolodyazhnyy
    11 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
    11 mins ago











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

    – Sergiy Kolodyazhnyy
    11 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 7 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 33 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
    11 mins ago











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

    – Sergiy Kolodyazhnyy
    11 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
    11 mins ago











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

    – Sergiy Kolodyazhnyy
    11 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
11 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
11 mins ago













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

– Sergiy Kolodyazhnyy
11 mins ago





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

– Sergiy Kolodyazhnyy
11 mins ago










2 Answers
2






active

oldest

votes


















2














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































    3














    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. :-)






    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









      2














      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




























        2














        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


























          2












          2








          2







          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













          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











          share


          share










          answered 9 mins ago









          Jeff SchallerJeff Schaller

          42.8k1159136




          42.8k1159136

























              3














              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. :-)






              share|improve this answer




























                3














                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. :-)






                share|improve this answer


























                  3












                  3








                  3







                  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. :-)






                  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. :-)







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 10 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

                      ORA-01691 (unable to extend lob segment) even though my tablespace has AUTOEXTEND onORA-01692: unable to...

                      Always On Availability groups resolving state after failover - Remote harden of transaction...

                      Circunscripción electoral de Guipúzcoa Referencias Menú de navegaciónLas claves del sistema electoral en...