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
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
New contributor
add a comment |
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
New contributor
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 eitherawk
orsed
. I'd recommend a 2 step process: delete the line viased -i '/# End of file/d'
and then insert the data you want with# End of file
added to originalcat
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
add a comment |
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
New contributor
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
text-processing sed cat gnu
New contributor
New contributor
edited 17 mins ago
Jeff Schaller
42.8k1159136
42.8k1159136
New contributor
asked 44 mins ago
EliEli
1134
1134
New contributor
New contributor
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 eitherawk
orsed
. I'd recommend a 2 step process: delete the line viased -i '/# End of file/d'
and then insert the data you want with# End of file
added to originalcat
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
add a comment |
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 eitherawk
orsed
. I'd recommend a 2 step process: delete the line viased -i '/# End of file/d'
and then insert the data you want with# End of file
added to originalcat
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
add a comment |
2 Answers
2
active
oldest
votes
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 i
nsert 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 (.
). W
rite the file back to disk and then q
uit.
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.
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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 i
nsert 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 (.
). W
rite the file back to disk and then q
uit.
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.
add a comment |
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 i
nsert 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 (.
). W
rite the file back to disk and then q
uit.
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.
add a comment |
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 i
nsert 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 (.
). W
rite the file back to disk and then q
uit.
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.
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 i
nsert 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 (.
). W
rite the file back to disk and then q
uit.
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.
answered 19 mins ago
Jeff SchallerJeff Schaller
42.8k1159136
42.8k1159136
add a comment |
add a comment |
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
add a comment |
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
add a comment |
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
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
edited 2 mins ago
answered 21 mins ago
filbrandenfilbranden
10k21645
10k21645
add a comment |
add a comment |
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.
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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 eitherawk
orsed
. I'd recommend a 2 step process: delete the line viased -i '/# End of file/d'
and then insert the data you want with# End of file
added to originalcat
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