What difference does it make using sed with/without whitespaces? The Next CEO of Stack OverflowSubstituting the first occurrence of a pattern in a line, for all the lines in a file with sedWorking with columns - awk and sedHow to delete empty comments with sed?Using sed to remove string from list of files failsWhat is the point of using multiple exclamation marks in sed?Change a string with sedUsing sed to pad-right a number in a CSVWhy does 'sed q' work differently when reading from a pipe?sed: how to disable autoprinting via script file instead of using the -n switch?Why might sed not make any change to a file?
How to use ReplaceAll on an expression that contains a rule
How to get the last not-null value in an ordered column of a huge table?
Can this note be analyzed as a non-chord tone?
Why is the US ranked as #45 in Press Freedom ratings, despite its extremely permissive free speech laws?
Is there such a thing as never melting snow?
(How) Could a medieval fantasy world survive a magic-induced "nuclear winter"?
Why don't programming languages automatically manage the synchronous/asynchronous problem?
Using multiple Nameservers to use different services
Decide between Polyglossia and Babel for LuaLaTeX in 2019
If Nick Fury and Coulson already knew about aliens (Kree and Skrull) why did they wait until Thor's appearance to start making weapons?
From jafe to El-Guest
what's the use of '% to gdp' type of variables?
My ex-girlfriend uses my Apple ID to login to her iPad, do I have to give her my Apple ID password to reset it?
Is it professional to write unrelated content in an almost-empty email?
Lucky Feat: How can "more than one creature spend a luck point to influence the outcome of a roll"?
Define command that accepts \ in arguments
Is it convenient to ask the journal's editor for two additional days to complete a review?
How to avoid supervisors with prejudiced views?
Towers in the ocean; How deep can they be built?
Regression vs Random Forest - Combination of features
Deriving the equation for variance
Aggressive Under-Indexing and no data for missing index
What does "shotgun unity" refer to here in this sentence?
Expressing the idea of having a very busy time
What difference does it make using sed with/without whitespaces?
The Next CEO of Stack OverflowSubstituting the first occurrence of a pattern in a line, for all the lines in a file with sedWorking with columns - awk and sedHow to delete empty comments with sed?Using sed to remove string from list of files failsWhat is the point of using multiple exclamation marks in sed?Change a string with sedUsing sed to pad-right a number in a CSVWhy does 'sed q' work differently when reading from a pipe?sed: how to disable autoprinting via script file instead of using the -n switch?Why might sed not make any change to a file?
I am learning shell-scripting and for that I am using HackerRank. There is a question related to sed on the same site: 'Sed' command #1. First of all I tried,
sed 's/the/this/'
but in that sample test case failed. Then I tried
sed 's/the /this /'
and it worked. So, the question arises what difference did the whitespaces created? Am I missing something here?
sed whitespace
New contributor
JHA is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
I am learning shell-scripting and for that I am using HackerRank. There is a question related to sed on the same site: 'Sed' command #1. First of all I tried,
sed 's/the/this/'
but in that sample test case failed. Then I tried
sed 's/the /this /'
and it worked. So, the question arises what difference did the whitespaces created? Am I missing something here?
sed whitespace
New contributor
JHA is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
I am learning shell-scripting and for that I am using HackerRank. There is a question related to sed on the same site: 'Sed' command #1. First of all I tried,
sed 's/the/this/'
but in that sample test case failed. Then I tried
sed 's/the /this /'
and it worked. So, the question arises what difference did the whitespaces created? Am I missing something here?
sed whitespace
New contributor
JHA is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I am learning shell-scripting and for that I am using HackerRank. There is a question related to sed on the same site: 'Sed' command #1. First of all I tried,
sed 's/the/this/'
but in that sample test case failed. Then I tried
sed 's/the /this /'
and it worked. So, the question arises what difference did the whitespaces created? Am I missing something here?
sed whitespace
sed whitespace
New contributor
JHA is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
JHA is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
edited 44 mins ago
Jeff Schaller♦
44.4k1162143
44.4k1162143
New contributor
JHA is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked 1 hour ago
JHAJHA
173
173
New contributor
JHA is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
JHA is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
JHA is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
The difference is whether there is a space after the in the input text.
For instance:
With a sentence without a space, no replacement:
$ echo 'theman' | sed 's/the /this /'
theman
With a sentence with a space, works as expected:
$ echo 'the man' | sed 's/the /this /'
this man
With a sentence with another whitespace character,
no replacement will occur:
$ echo -e 'thetman' | sed 's/the /this /'
the man
New contributor
BDR is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I missed that. I had to take "the" as a string. Not a substring.
– JHA
50 mins ago
add a comment |
It's a cheap and error-prone way of doing word matching.
Note that the with a space after it does not match the word thereby so matching with a space after the the avoids matching the string at the start of words. However, it still does match bathe (if followed by a space), and it does not match the at the end of a line.
To match the word the properly, you should not use spaces around the word, as that would prevent you from matching it at the start or end of lines or if it's flanked by any other non-word character, such as any punctuation or tab character, for example.
Instead, use a zero-width word boundary pattern:
sed 's/<the>/this/g'
The < and > matches the boundaries before and after the word, i.e. the space between a word character and a non-word character. A word character is generally any character matching [[:alnum:]_] (or [A-Za-z0-9_] in the POSIX locale).
With GNU sed, you could also use b in place of < and >:
sed 's/btheb/this/g'
Thank you for the answer. And congratulations for the new post: a moderator. I personally voted for you and Jeff as my 1st and 2nd choice respectively from my main account. I wasn't sure how this question would be accepted by the community so came up with an Unregistered account. I've accepted BDR's answer since his answer was appreciable and he is a new user and might want some rep points. You'll have my upvote from main account.
– JHA
42 mins ago
add a comment |
sed works with regular expressions.
Using sed 's/the /this /' you just make the space after the part of the matched pattern.
Using sed 's/the/this/' you replace all occurrences of the with this no matter if a space exists after the.
In the HackerRank exercise, the result is the same because to replace the with this is logical... you replace just a pro-noun which by default is followed by space (grammar rules).
You can see the difference if you try for example to capitalize the in the word the theater:
echo 'the theater' |sed 's/the /THE /g'
THE theater
#theater is ignored since the is not followed by space
echo 'the theater' |sed 's/the/THE/g'
THE THEater
#both the are capitalized.
Thank you for the answer. Appreciated :)
– JHA
41 mins ago
add a comment |
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
);
);
JHA 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%2f509765%2fwhat-difference-does-it-make-using-sed-with-without-whitespaces%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
The difference is whether there is a space after the in the input text.
For instance:
With a sentence without a space, no replacement:
$ echo 'theman' | sed 's/the /this /'
theman
With a sentence with a space, works as expected:
$ echo 'the man' | sed 's/the /this /'
this man
With a sentence with another whitespace character,
no replacement will occur:
$ echo -e 'thetman' | sed 's/the /this /'
the man
New contributor
BDR is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I missed that. I had to take "the" as a string. Not a substring.
– JHA
50 mins ago
add a comment |
The difference is whether there is a space after the in the input text.
For instance:
With a sentence without a space, no replacement:
$ echo 'theman' | sed 's/the /this /'
theman
With a sentence with a space, works as expected:
$ echo 'the man' | sed 's/the /this /'
this man
With a sentence with another whitespace character,
no replacement will occur:
$ echo -e 'thetman' | sed 's/the /this /'
the man
New contributor
BDR is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I missed that. I had to take "the" as a string. Not a substring.
– JHA
50 mins ago
add a comment |
The difference is whether there is a space after the in the input text.
For instance:
With a sentence without a space, no replacement:
$ echo 'theman' | sed 's/the /this /'
theman
With a sentence with a space, works as expected:
$ echo 'the man' | sed 's/the /this /'
this man
With a sentence with another whitespace character,
no replacement will occur:
$ echo -e 'thetman' | sed 's/the /this /'
the man
New contributor
BDR is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
The difference is whether there is a space after the in the input text.
For instance:
With a sentence without a space, no replacement:
$ echo 'theman' | sed 's/the /this /'
theman
With a sentence with a space, works as expected:
$ echo 'the man' | sed 's/the /this /'
this man
With a sentence with another whitespace character,
no replacement will occur:
$ echo -e 'thetman' | sed 's/the /this /'
the man
New contributor
BDR is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
edited 12 mins ago
G-Man
13.6k93770
13.6k93770
New contributor
BDR is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
answered 59 mins ago
BDRBDR
363
363
New contributor
BDR is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
BDR is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
BDR is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I missed that. I had to take "the" as a string. Not a substring.
– JHA
50 mins ago
add a comment |
I missed that. I had to take "the" as a string. Not a substring.
– JHA
50 mins ago
I missed that. I had to take "the" as a string. Not a substring.
– JHA
50 mins ago
I missed that. I had to take "the" as a string. Not a substring.
– JHA
50 mins ago
add a comment |
It's a cheap and error-prone way of doing word matching.
Note that the with a space after it does not match the word thereby so matching with a space after the the avoids matching the string at the start of words. However, it still does match bathe (if followed by a space), and it does not match the at the end of a line.
To match the word the properly, you should not use spaces around the word, as that would prevent you from matching it at the start or end of lines or if it's flanked by any other non-word character, such as any punctuation or tab character, for example.
Instead, use a zero-width word boundary pattern:
sed 's/<the>/this/g'
The < and > matches the boundaries before and after the word, i.e. the space between a word character and a non-word character. A word character is generally any character matching [[:alnum:]_] (or [A-Za-z0-9_] in the POSIX locale).
With GNU sed, you could also use b in place of < and >:
sed 's/btheb/this/g'
Thank you for the answer. And congratulations for the new post: a moderator. I personally voted for you and Jeff as my 1st and 2nd choice respectively from my main account. I wasn't sure how this question would be accepted by the community so came up with an Unregistered account. I've accepted BDR's answer since his answer was appreciable and he is a new user and might want some rep points. You'll have my upvote from main account.
– JHA
42 mins ago
add a comment |
It's a cheap and error-prone way of doing word matching.
Note that the with a space after it does not match the word thereby so matching with a space after the the avoids matching the string at the start of words. However, it still does match bathe (if followed by a space), and it does not match the at the end of a line.
To match the word the properly, you should not use spaces around the word, as that would prevent you from matching it at the start or end of lines or if it's flanked by any other non-word character, such as any punctuation or tab character, for example.
Instead, use a zero-width word boundary pattern:
sed 's/<the>/this/g'
The < and > matches the boundaries before and after the word, i.e. the space between a word character and a non-word character. A word character is generally any character matching [[:alnum:]_] (or [A-Za-z0-9_] in the POSIX locale).
With GNU sed, you could also use b in place of < and >:
sed 's/btheb/this/g'
Thank you for the answer. And congratulations for the new post: a moderator. I personally voted for you and Jeff as my 1st and 2nd choice respectively from my main account. I wasn't sure how this question would be accepted by the community so came up with an Unregistered account. I've accepted BDR's answer since his answer was appreciable and he is a new user and might want some rep points. You'll have my upvote from main account.
– JHA
42 mins ago
add a comment |
It's a cheap and error-prone way of doing word matching.
Note that the with a space after it does not match the word thereby so matching with a space after the the avoids matching the string at the start of words. However, it still does match bathe (if followed by a space), and it does not match the at the end of a line.
To match the word the properly, you should not use spaces around the word, as that would prevent you from matching it at the start or end of lines or if it's flanked by any other non-word character, such as any punctuation or tab character, for example.
Instead, use a zero-width word boundary pattern:
sed 's/<the>/this/g'
The < and > matches the boundaries before and after the word, i.e. the space between a word character and a non-word character. A word character is generally any character matching [[:alnum:]_] (or [A-Za-z0-9_] in the POSIX locale).
With GNU sed, you could also use b in place of < and >:
sed 's/btheb/this/g'
It's a cheap and error-prone way of doing word matching.
Note that the with a space after it does not match the word thereby so matching with a space after the the avoids matching the string at the start of words. However, it still does match bathe (if followed by a space), and it does not match the at the end of a line.
To match the word the properly, you should not use spaces around the word, as that would prevent you from matching it at the start or end of lines or if it's flanked by any other non-word character, such as any punctuation or tab character, for example.
Instead, use a zero-width word boundary pattern:
sed 's/<the>/this/g'
The < and > matches the boundaries before and after the word, i.e. the space between a word character and a non-word character. A word character is generally any character matching [[:alnum:]_] (or [A-Za-z0-9_] in the POSIX locale).
With GNU sed, you could also use b in place of < and >:
sed 's/btheb/this/g'
edited 29 mins ago
answered 49 mins ago
Kusalananda♦Kusalananda
139k17259429
139k17259429
Thank you for the answer. And congratulations for the new post: a moderator. I personally voted for you and Jeff as my 1st and 2nd choice respectively from my main account. I wasn't sure how this question would be accepted by the community so came up with an Unregistered account. I've accepted BDR's answer since his answer was appreciable and he is a new user and might want some rep points. You'll have my upvote from main account.
– JHA
42 mins ago
add a comment |
Thank you for the answer. And congratulations for the new post: a moderator. I personally voted for you and Jeff as my 1st and 2nd choice respectively from my main account. I wasn't sure how this question would be accepted by the community so came up with an Unregistered account. I've accepted BDR's answer since his answer was appreciable and he is a new user and might want some rep points. You'll have my upvote from main account.
– JHA
42 mins ago
Thank you for the answer. And congratulations for the new post: a moderator. I personally voted for you and Jeff as my 1st and 2nd choice respectively from my main account. I wasn't sure how this question would be accepted by the community so came up with an Unregistered account. I've accepted BDR's answer since his answer was appreciable and he is a new user and might want some rep points. You'll have my upvote from main account.
– JHA
42 mins ago
Thank you for the answer. And congratulations for the new post: a moderator. I personally voted for you and Jeff as my 1st and 2nd choice respectively from my main account. I wasn't sure how this question would be accepted by the community so came up with an Unregistered account. I've accepted BDR's answer since his answer was appreciable and he is a new user and might want some rep points. You'll have my upvote from main account.
– JHA
42 mins ago
add a comment |
sed works with regular expressions.
Using sed 's/the /this /' you just make the space after the part of the matched pattern.
Using sed 's/the/this/' you replace all occurrences of the with this no matter if a space exists after the.
In the HackerRank exercise, the result is the same because to replace the with this is logical... you replace just a pro-noun which by default is followed by space (grammar rules).
You can see the difference if you try for example to capitalize the in the word the theater:
echo 'the theater' |sed 's/the /THE /g'
THE theater
#theater is ignored since the is not followed by space
echo 'the theater' |sed 's/the/THE/g'
THE THEater
#both the are capitalized.
Thank you for the answer. Appreciated :)
– JHA
41 mins ago
add a comment |
sed works with regular expressions.
Using sed 's/the /this /' you just make the space after the part of the matched pattern.
Using sed 's/the/this/' you replace all occurrences of the with this no matter if a space exists after the.
In the HackerRank exercise, the result is the same because to replace the with this is logical... you replace just a pro-noun which by default is followed by space (grammar rules).
You can see the difference if you try for example to capitalize the in the word the theater:
echo 'the theater' |sed 's/the /THE /g'
THE theater
#theater is ignored since the is not followed by space
echo 'the theater' |sed 's/the/THE/g'
THE THEater
#both the are capitalized.
Thank you for the answer. Appreciated :)
– JHA
41 mins ago
add a comment |
sed works with regular expressions.
Using sed 's/the /this /' you just make the space after the part of the matched pattern.
Using sed 's/the/this/' you replace all occurrences of the with this no matter if a space exists after the.
In the HackerRank exercise, the result is the same because to replace the with this is logical... you replace just a pro-noun which by default is followed by space (grammar rules).
You can see the difference if you try for example to capitalize the in the word the theater:
echo 'the theater' |sed 's/the /THE /g'
THE theater
#theater is ignored since the is not followed by space
echo 'the theater' |sed 's/the/THE/g'
THE THEater
#both the are capitalized.
sed works with regular expressions.
Using sed 's/the /this /' you just make the space after the part of the matched pattern.
Using sed 's/the/this/' you replace all occurrences of the with this no matter if a space exists after the.
In the HackerRank exercise, the result is the same because to replace the with this is logical... you replace just a pro-noun which by default is followed by space (grammar rules).
You can see the difference if you try for example to capitalize the in the word the theater:
echo 'the theater' |sed 's/the /THE /g'
THE theater
#theater is ignored since the is not followed by space
echo 'the theater' |sed 's/the/THE/g'
THE THEater
#both the are capitalized.
edited 46 mins ago
JHA
173
173
answered 49 mins ago
George VasiliouGeorge Vasiliou
5,75531030
5,75531030
Thank you for the answer. Appreciated :)
– JHA
41 mins ago
add a comment |
Thank you for the answer. Appreciated :)
– JHA
41 mins ago
Thank you for the answer. Appreciated :)
– JHA
41 mins ago
Thank you for the answer. Appreciated :)
– JHA
41 mins ago
add a comment |
JHA is a new contributor. Be nice, and check out our Code of Conduct.
JHA is a new contributor. Be nice, and check out our Code of Conduct.
JHA is a new contributor. Be nice, and check out our Code of Conduct.
JHA 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%2f509765%2fwhat-difference-does-it-make-using-sed-with-without-whitespaces%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
