Can sed produce output in the form of text file(s) all by itself as long as the input came from STDIN?
What the title says: assuming sed
reads from STDIN
1 could its output be a text file ?
Just to be clear, I'm not talking about saving sed
's output to a text file via shell operators like >
, >>
or using tools like tee
etc.
The question here is whether sed
alone can produce output in the form of text file(s) and if so, under which circumstances ?
1: this is simply to rule out any in-place editing of a text file with implementations that support it.
sed
add a comment |
What the title says: assuming sed
reads from STDIN
1 could its output be a text file ?
Just to be clear, I'm not talking about saving sed
's output to a text file via shell operators like >
, >>
or using tools like tee
etc.
The question here is whether sed
alone can produce output in the form of text file(s) and if so, under which circumstances ?
1: this is simply to rule out any in-place editing of a text file with implementations that support it.
sed
If the question is about being able to redirectsed
's output from withinsed
(the accepted reply suggests that), then please change the title and the text of your question to reflect it; the argument to thew
command ofsed
doesn' t have to be a "text file"; it could be a character device, pipe, socket, etc.
– pizdelect
Jan 10 at 14:14
@pizdelect - there's nothing to change, really: the question is whethersed
alone can produce a text file and if so how / when does that happen. If you still don't understand it then feel free to down-vote it. If you already did so, then enjoy your vote.
– don_crissti
Jan 10 at 19:07
1
Changing the question to something more relevant and precise would help people looking for info -- for instance, even the text from your comment "whether sed alone can produce (create?) a (text) file ..." is MUCH better than the one from the question ;-)
– pizdelect
Jan 10 at 20:49
@pizdelect - if you take the time to read the question it says exactly that but whatever, I'll edit it... is it better now ?
– don_crissti
Jan 10 at 20:53
add a comment |
What the title says: assuming sed
reads from STDIN
1 could its output be a text file ?
Just to be clear, I'm not talking about saving sed
's output to a text file via shell operators like >
, >>
or using tools like tee
etc.
The question here is whether sed
alone can produce output in the form of text file(s) and if so, under which circumstances ?
1: this is simply to rule out any in-place editing of a text file with implementations that support it.
sed
What the title says: assuming sed
reads from STDIN
1 could its output be a text file ?
Just to be clear, I'm not talking about saving sed
's output to a text file via shell operators like >
, >>
or using tools like tee
etc.
The question here is whether sed
alone can produce output in the form of text file(s) and if so, under which circumstances ?
1: this is simply to rule out any in-place editing of a text file with implementations that support it.
sed
sed
edited Jan 10 at 21:05
don_crissti
asked Jan 10 at 12:21
don_crisstidon_crissti
51.3k15137165
51.3k15137165
If the question is about being able to redirectsed
's output from withinsed
(the accepted reply suggests that), then please change the title and the text of your question to reflect it; the argument to thew
command ofsed
doesn' t have to be a "text file"; it could be a character device, pipe, socket, etc.
– pizdelect
Jan 10 at 14:14
@pizdelect - there's nothing to change, really: the question is whethersed
alone can produce a text file and if so how / when does that happen. If you still don't understand it then feel free to down-vote it. If you already did so, then enjoy your vote.
– don_crissti
Jan 10 at 19:07
1
Changing the question to something more relevant and precise would help people looking for info -- for instance, even the text from your comment "whether sed alone can produce (create?) a (text) file ..." is MUCH better than the one from the question ;-)
– pizdelect
Jan 10 at 20:49
@pizdelect - if you take the time to read the question it says exactly that but whatever, I'll edit it... is it better now ?
– don_crissti
Jan 10 at 20:53
add a comment |
If the question is about being able to redirectsed
's output from withinsed
(the accepted reply suggests that), then please change the title and the text of your question to reflect it; the argument to thew
command ofsed
doesn' t have to be a "text file"; it could be a character device, pipe, socket, etc.
– pizdelect
Jan 10 at 14:14
@pizdelect - there's nothing to change, really: the question is whethersed
alone can produce a text file and if so how / when does that happen. If you still don't understand it then feel free to down-vote it. If you already did so, then enjoy your vote.
– don_crissti
Jan 10 at 19:07
1
Changing the question to something more relevant and precise would help people looking for info -- for instance, even the text from your comment "whether sed alone can produce (create?) a (text) file ..." is MUCH better than the one from the question ;-)
– pizdelect
Jan 10 at 20:49
@pizdelect - if you take the time to read the question it says exactly that but whatever, I'll edit it... is it better now ?
– don_crissti
Jan 10 at 20:53
If the question is about being able to redirect
sed
's output from within sed
(the accepted reply suggests that), then please change the title and the text of your question to reflect it; the argument to the w
command of sed
doesn' t have to be a "text file"; it could be a character device, pipe, socket, etc.– pizdelect
Jan 10 at 14:14
If the question is about being able to redirect
sed
's output from within sed
(the accepted reply suggests that), then please change the title and the text of your question to reflect it; the argument to the w
command of sed
doesn' t have to be a "text file"; it could be a character device, pipe, socket, etc.– pizdelect
Jan 10 at 14:14
@pizdelect - there's nothing to change, really: the question is whether
sed
alone can produce a text file and if so how / when does that happen. If you still don't understand it then feel free to down-vote it. If you already did so, then enjoy your vote.– don_crissti
Jan 10 at 19:07
@pizdelect - there's nothing to change, really: the question is whether
sed
alone can produce a text file and if so how / when does that happen. If you still don't understand it then feel free to down-vote it. If you already did so, then enjoy your vote.– don_crissti
Jan 10 at 19:07
1
1
Changing the question to something more relevant and precise would help people looking for info -- for instance, even the text from your comment "whether sed alone can produce (create?) a (text) file ..." is MUCH better than the one from the question ;-)
– pizdelect
Jan 10 at 20:49
Changing the question to something more relevant and precise would help people looking for info -- for instance, even the text from your comment "whether sed alone can produce (create?) a (text) file ..." is MUCH better than the one from the question ;-)
– pizdelect
Jan 10 at 20:49
@pizdelect - if you take the time to read the question it says exactly that but whatever, I'll edit it... is it better now ?
– don_crissti
Jan 10 at 20:53
@pizdelect - if you take the time to read the question it says exactly that but whatever, I'll edit it... is it better now ?
– don_crissti
Jan 10 at 20:53
add a comment |
1 Answer
1
active
oldest
votes
Yes, using the w
command, or the w
flag to the s
command, both of which are specified by POSIX.
For example, with
sed -n 'w output.txt'
anything fed into sed
’s standard input will be written to output.txt
, with no output to sed
’s standard output (thanks to the -n
option). This can be combined with other commands to manipulate the pattern space before writing it out.
A few notes of warning and recommendations:
If the file name starts with a blank, use a ./
prefix:
sed -n 'w ./ output with blanks.txt'
If the file name contains newline characters, POSIXly, you can escape them with backslash, though it won't work with all sed
implementations (in particular, not with GNU sed
nor busybox sed
):
sed -n 'w ./output
with
newline.txt'
If it contains backslash characters, in some implementations (the POSIX ones above that support newlines in file names), you need to escape them with backslash:
sed -n 'w file\with\backslash.txt' # POSIX
sed -n 'w filewithbackslash.txt' # GNU
Also note that the output file will be created (or truncated) even if the input is empty or the w
command is never run like in:
sed 'd;w file'
Or
seq 20 | sed '/21/ w file'
You may want to use awk
instead to avoid this kind of problems
FILE=arbitrary-file-name awk '/100/ {print > ENVIRON["FILE"]}'
also thew
flag of thes///
command. A standardsed
can use a file name in ther
andw
commands or as an argument to thew
flag ofs///
. This has security implication, because you cannot pledge the sed command as being just a filter.
– pizdelect
Jan 10 at 12:35
2
See also theW
command of GNUsed
.
– Stéphane Chazelas
Jan 10 at 13:06
Thanks for confirming my statement ! ;)
– don_crissti
Jan 10 at 19:37
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
});
}
});
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%2f493697%2fcan-sed-produce-output-in-the-form-of-text-files-all-by-itself-as-long-as-the%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Yes, using the w
command, or the w
flag to the s
command, both of which are specified by POSIX.
For example, with
sed -n 'w output.txt'
anything fed into sed
’s standard input will be written to output.txt
, with no output to sed
’s standard output (thanks to the -n
option). This can be combined with other commands to manipulate the pattern space before writing it out.
A few notes of warning and recommendations:
If the file name starts with a blank, use a ./
prefix:
sed -n 'w ./ output with blanks.txt'
If the file name contains newline characters, POSIXly, you can escape them with backslash, though it won't work with all sed
implementations (in particular, not with GNU sed
nor busybox sed
):
sed -n 'w ./output
with
newline.txt'
If it contains backslash characters, in some implementations (the POSIX ones above that support newlines in file names), you need to escape them with backslash:
sed -n 'w file\with\backslash.txt' # POSIX
sed -n 'w filewithbackslash.txt' # GNU
Also note that the output file will be created (or truncated) even if the input is empty or the w
command is never run like in:
sed 'd;w file'
Or
seq 20 | sed '/21/ w file'
You may want to use awk
instead to avoid this kind of problems
FILE=arbitrary-file-name awk '/100/ {print > ENVIRON["FILE"]}'
also thew
flag of thes///
command. A standardsed
can use a file name in ther
andw
commands or as an argument to thew
flag ofs///
. This has security implication, because you cannot pledge the sed command as being just a filter.
– pizdelect
Jan 10 at 12:35
2
See also theW
command of GNUsed
.
– Stéphane Chazelas
Jan 10 at 13:06
Thanks for confirming my statement ! ;)
– don_crissti
Jan 10 at 19:37
add a comment |
Yes, using the w
command, or the w
flag to the s
command, both of which are specified by POSIX.
For example, with
sed -n 'w output.txt'
anything fed into sed
’s standard input will be written to output.txt
, with no output to sed
’s standard output (thanks to the -n
option). This can be combined with other commands to manipulate the pattern space before writing it out.
A few notes of warning and recommendations:
If the file name starts with a blank, use a ./
prefix:
sed -n 'w ./ output with blanks.txt'
If the file name contains newline characters, POSIXly, you can escape them with backslash, though it won't work with all sed
implementations (in particular, not with GNU sed
nor busybox sed
):
sed -n 'w ./output
with
newline.txt'
If it contains backslash characters, in some implementations (the POSIX ones above that support newlines in file names), you need to escape them with backslash:
sed -n 'w file\with\backslash.txt' # POSIX
sed -n 'w filewithbackslash.txt' # GNU
Also note that the output file will be created (or truncated) even if the input is empty or the w
command is never run like in:
sed 'd;w file'
Or
seq 20 | sed '/21/ w file'
You may want to use awk
instead to avoid this kind of problems
FILE=arbitrary-file-name awk '/100/ {print > ENVIRON["FILE"]}'
also thew
flag of thes///
command. A standardsed
can use a file name in ther
andw
commands or as an argument to thew
flag ofs///
. This has security implication, because you cannot pledge the sed command as being just a filter.
– pizdelect
Jan 10 at 12:35
2
See also theW
command of GNUsed
.
– Stéphane Chazelas
Jan 10 at 13:06
Thanks for confirming my statement ! ;)
– don_crissti
Jan 10 at 19:37
add a comment |
Yes, using the w
command, or the w
flag to the s
command, both of which are specified by POSIX.
For example, with
sed -n 'w output.txt'
anything fed into sed
’s standard input will be written to output.txt
, with no output to sed
’s standard output (thanks to the -n
option). This can be combined with other commands to manipulate the pattern space before writing it out.
A few notes of warning and recommendations:
If the file name starts with a blank, use a ./
prefix:
sed -n 'w ./ output with blanks.txt'
If the file name contains newline characters, POSIXly, you can escape them with backslash, though it won't work with all sed
implementations (in particular, not with GNU sed
nor busybox sed
):
sed -n 'w ./output
with
newline.txt'
If it contains backslash characters, in some implementations (the POSIX ones above that support newlines in file names), you need to escape them with backslash:
sed -n 'w file\with\backslash.txt' # POSIX
sed -n 'w filewithbackslash.txt' # GNU
Also note that the output file will be created (or truncated) even if the input is empty or the w
command is never run like in:
sed 'd;w file'
Or
seq 20 | sed '/21/ w file'
You may want to use awk
instead to avoid this kind of problems
FILE=arbitrary-file-name awk '/100/ {print > ENVIRON["FILE"]}'
Yes, using the w
command, or the w
flag to the s
command, both of which are specified by POSIX.
For example, with
sed -n 'w output.txt'
anything fed into sed
’s standard input will be written to output.txt
, with no output to sed
’s standard output (thanks to the -n
option). This can be combined with other commands to manipulate the pattern space before writing it out.
A few notes of warning and recommendations:
If the file name starts with a blank, use a ./
prefix:
sed -n 'w ./ output with blanks.txt'
If the file name contains newline characters, POSIXly, you can escape them with backslash, though it won't work with all sed
implementations (in particular, not with GNU sed
nor busybox sed
):
sed -n 'w ./output
with
newline.txt'
If it contains backslash characters, in some implementations (the POSIX ones above that support newlines in file names), you need to escape them with backslash:
sed -n 'w file\with\backslash.txt' # POSIX
sed -n 'w filewithbackslash.txt' # GNU
Also note that the output file will be created (or truncated) even if the input is empty or the w
command is never run like in:
sed 'd;w file'
Or
seq 20 | sed '/21/ w file'
You may want to use awk
instead to avoid this kind of problems
FILE=arbitrary-file-name awk '/100/ {print > ENVIRON["FILE"]}'
edited Jan 10 at 13:02
Stéphane Chazelas
308k57581939
308k57581939
answered Jan 10 at 12:27
Stephen KittStephen Kitt
174k24398473
174k24398473
also thew
flag of thes///
command. A standardsed
can use a file name in ther
andw
commands or as an argument to thew
flag ofs///
. This has security implication, because you cannot pledge the sed command as being just a filter.
– pizdelect
Jan 10 at 12:35
2
See also theW
command of GNUsed
.
– Stéphane Chazelas
Jan 10 at 13:06
Thanks for confirming my statement ! ;)
– don_crissti
Jan 10 at 19:37
add a comment |
also thew
flag of thes///
command. A standardsed
can use a file name in ther
andw
commands or as an argument to thew
flag ofs///
. This has security implication, because you cannot pledge the sed command as being just a filter.
– pizdelect
Jan 10 at 12:35
2
See also theW
command of GNUsed
.
– Stéphane Chazelas
Jan 10 at 13:06
Thanks for confirming my statement ! ;)
– don_crissti
Jan 10 at 19:37
also the
w
flag of the s///
command. A standard sed
can use a file name in the r
and w
commands or as an argument to the w
flag of s///
. This has security implication, because you cannot pledge the sed command as being just a filter.– pizdelect
Jan 10 at 12:35
also the
w
flag of the s///
command. A standard sed
can use a file name in the r
and w
commands or as an argument to the w
flag of s///
. This has security implication, because you cannot pledge the sed command as being just a filter.– pizdelect
Jan 10 at 12:35
2
2
See also the
W
command of GNU sed
.– Stéphane Chazelas
Jan 10 at 13:06
See also the
W
command of GNU sed
.– Stéphane Chazelas
Jan 10 at 13:06
Thanks for confirming my statement ! ;)
– don_crissti
Jan 10 at 19:37
Thanks for confirming my statement ! ;)
– don_crissti
Jan 10 at 19:37
add a comment |
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%2f493697%2fcan-sed-produce-output-in-the-form-of-text-files-all-by-itself-as-long-as-the%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
If the question is about being able to redirect
sed
's output from withinsed
(the accepted reply suggests that), then please change the title and the text of your question to reflect it; the argument to thew
command ofsed
doesn' t have to be a "text file"; it could be a character device, pipe, socket, etc.– pizdelect
Jan 10 at 14:14
@pizdelect - there's nothing to change, really: the question is whether
sed
alone can produce a text file and if so how / when does that happen. If you still don't understand it then feel free to down-vote it. If you already did so, then enjoy your vote.– don_crissti
Jan 10 at 19:07
1
Changing the question to something more relevant and precise would help people looking for info -- for instance, even the text from your comment "whether sed alone can produce (create?) a (text) file ..." is MUCH better than the one from the question ;-)
– pizdelect
Jan 10 at 20:49
@pizdelect - if you take the time to read the question it says exactly that but whatever, I'll edit it... is it better now ?
– don_crissti
Jan 10 at 20:53