Gnu sed, will the p command appends a newline when printing?
root@u1804:~# sed --version
sed (GNU sed) 4.5
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
root@u1804:~#
I'm new to sed and I created below sed's workflow based on my understanding (correct me if you find anything wrong).
So it seems the default auto printing of the pattern space will always include a newline at the end. My question is, will p
includes a newline, too? I have below examples.
root@u1804:~# seq 3 | sed -rn 'p'
1
2
3
root@u1804:
Here the newline at the end of each number is added by sed itself (see the diagram "adds back newline to pattern space"). So it seems p
will not append a newline. However, see below example.
root@u1804:~# seq 3 | sed -rn 'x;p;x;p'
1
2
3
root@u1804:~#
Here x
exchange pattern space with hold space, which will result in an empty pattern space. Now p
applies to the pattern space (nothing in it) should print nothing. But based on the result, it seems here p
prints a newline. To me it seems this is inconsistent behavior. Can anyone help to explain, please?
sed
add a comment |
root@u1804:~# sed --version
sed (GNU sed) 4.5
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
root@u1804:~#
I'm new to sed and I created below sed's workflow based on my understanding (correct me if you find anything wrong).
So it seems the default auto printing of the pattern space will always include a newline at the end. My question is, will p
includes a newline, too? I have below examples.
root@u1804:~# seq 3 | sed -rn 'p'
1
2
3
root@u1804:
Here the newline at the end of each number is added by sed itself (see the diagram "adds back newline to pattern space"). So it seems p
will not append a newline. However, see below example.
root@u1804:~# seq 3 | sed -rn 'x;p;x;p'
1
2
3
root@u1804:~#
Here x
exchange pattern space with hold space, which will result in an empty pattern space. Now p
applies to the pattern space (nothing in it) should print nothing. But based on the result, it seems here p
prints a newline. To me it seems this is inconsistent behavior. Can anyone help to explain, please?
sed
add a comment |
root@u1804:~# sed --version
sed (GNU sed) 4.5
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
root@u1804:~#
I'm new to sed and I created below sed's workflow based on my understanding (correct me if you find anything wrong).
So it seems the default auto printing of the pattern space will always include a newline at the end. My question is, will p
includes a newline, too? I have below examples.
root@u1804:~# seq 3 | sed -rn 'p'
1
2
3
root@u1804:
Here the newline at the end of each number is added by sed itself (see the diagram "adds back newline to pattern space"). So it seems p
will not append a newline. However, see below example.
root@u1804:~# seq 3 | sed -rn 'x;p;x;p'
1
2
3
root@u1804:~#
Here x
exchange pattern space with hold space, which will result in an empty pattern space. Now p
applies to the pattern space (nothing in it) should print nothing. But based on the result, it seems here p
prints a newline. To me it seems this is inconsistent behavior. Can anyone help to explain, please?
sed
root@u1804:~# sed --version
sed (GNU sed) 4.5
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
root@u1804:~#
I'm new to sed and I created below sed's workflow based on my understanding (correct me if you find anything wrong).
So it seems the default auto printing of the pattern space will always include a newline at the end. My question is, will p
includes a newline, too? I have below examples.
root@u1804:~# seq 3 | sed -rn 'p'
1
2
3
root@u1804:
Here the newline at the end of each number is added by sed itself (see the diagram "adds back newline to pattern space"). So it seems p
will not append a newline. However, see below example.
root@u1804:~# seq 3 | sed -rn 'x;p;x;p'
1
2
3
root@u1804:~#
Here x
exchange pattern space with hold space, which will result in an empty pattern space. Now p
applies to the pattern space (nothing in it) should print nothing. But based on the result, it seems here p
prints a newline. To me it seems this is inconsistent behavior. Can anyone help to explain, please?
sed
sed
asked 5 mins ago
Ogrish ManOgrish Man
5151415
5151415
add a comment |
add a comment |
0
active
oldest
votes
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
});
}
});
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%2f493141%2fgnu-sed-will-the-p-command-appends-a-newline-when-printing%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f493141%2fgnu-sed-will-the-p-command-appends-a-newline-when-printing%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