insert EOF statement before the last line of filesed script to insert line after the last matching line in a...
What kind of hardware implements Fourier transform?
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?
Strange Sign on Lab Door
What is the in-universe cost of a TIE fighter?
How to tag distinct options/entities without giving any an implicit priority or suggested order?
Broken patches on a road
Checking for the existence of multiple directories
What creature do these Alchemical Homunculus actions target?
Contest math problem about crossing out numbers in the table
Slow moving projectiles from a hand-held weapon - how do they reach the target?
Would a National Army of mercenaries be a feasible idea?
Can a dragon be stuck looking like a human?
Can a hotel cancel a confirmed reservation?
Why do members of Congress in committee hearings ask witnesses the same question multiple times?
Enable Advanced Currency Management using CLI
Can a person refuse a presidential pardon?
How would a Dictatorship make a country more successful?
Compress command output by piping to bzip2
Is there any differences between "Gucken" and "Schauen"?
A starship is travelling at 0.9c and collides with a small rock. Will it leave a clean hole through, or will more happen?
Does Improved Divine Smite trigger when a paladin makes an unarmed strike?
Process to change collation on a database
What is better: yes / no radio, or simple checkbox?
Is a debit card dangerous for an account with low balance and no overdraft protection?
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
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 |
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 43 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
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 |
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
21 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
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
21 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 18 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 1 min ago
answered 20 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
21 mins ago
Let me know if you want that as an answer and not just comment
– Sergiy Kolodyazhnyy
21 mins ago