insert EOF statement before the last line of filesed script to insert line after the last matching line in a...
Where are a monster’s hit dice found in the stat block?
Slow moving projectiles from a hand-held weapon - how do they reach the target?
What to do when being responsible for data protection in your lab, yet advice is ignored?
Placing an adverb between a verb and an object?
How can animals be objects of ethics without being subjects as well?
Book where aliens are selecting humans for food consumption
Typing Amharic inside a math equation?
A minimum of two personnel "are" or "is"?
Dilemma of explaining to interviewer that he is the reason for declining second interview
What is a jet (unit) shown in Windows 10 calculator?
Enable Advanced Currency Management using CLI
Groups acting on trees
Why would the Pakistan airspace closure cancel flights not headed to Pakistan itself?
Can we use the stored gravitational potential energy of a building to produce power?
Is it a fallacy if someone claims they need an explanation for every word of your argument to the point where they don't understand common terms?
Difference between two quite-similar Terminal commands
Solving Fredholm Equation of the second kind
Why did this image turn out darker?
Compress command output by piping to bzip2
Process to change collation on a database
Avoiding morning and evening handshakes
Is there any differences between "Gucken" and "Schauen"?
Every character has a name - does this lead to too many named characters?
Lick explanation
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
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
24 mins ago
Let me know if you want that as an answer and not just comment
– Sergiy Kolodyazhnyy
24 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 20 mins ago
Jeff Schaller
42.8k1159136
42.8k1159136
New contributor
asked 46 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
24 mins ago
Let me know if you want that as an answer and not just comment
– Sergiy Kolodyazhnyy
24 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
24 mins ago
Let me know if you want that as an answer and not just comment
– Sergiy Kolodyazhnyy
24 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
24 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
24 mins ago
Let me know if you want that as an answer and not just comment
– Sergiy Kolodyazhnyy
24 mins ago
Let me know if you want that as an answer and not just comment
– Sergiy Kolodyazhnyy
24 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 22 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 4 mins ago
answered 23 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
24 mins ago
Let me know if you want that as an answer and not just comment
– Sergiy Kolodyazhnyy
24 mins ago