/(.+)n1/ works but /(.*)n1/ doesn't when they should both work
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
I was playing around with sed
after answering another question and I noticed that .+
and .*
are not giving the same result when they both match multiple characters in a context address.
The following command1:
sed -E '$!N;/(.+)n1/!P;D' <<IN
one
one_more
two
two_more
IN
prints
one_more
two_more
OK, that's the expected output.
Changing the regex from .+
to .*
(i.e. from one or more characters to zero or more characters) should give the same result but it does not:
sed -E '$!N;/(.*)n1/!P;D' <<IN
one
one_more
two
two_more
IN
prints just one line
two_more
It appears to work fine in the left hand side of a substitution e.g.
sed -E '$!N;s/(.*)n1/1/' <<IN
one
one_more
two
two_more
IN
prints
one_more
two_more
just not in a context address...
What's going on here ?
1: I'm using ERE for simplicity/readability, the same happens when using BRE
sed regular-expression
add a comment |Â
up vote
0
down vote
favorite
I was playing around with sed
after answering another question and I noticed that .+
and .*
are not giving the same result when they both match multiple characters in a context address.
The following command1:
sed -E '$!N;/(.+)n1/!P;D' <<IN
one
one_more
two
two_more
IN
prints
one_more
two_more
OK, that's the expected output.
Changing the regex from .+
to .*
(i.e. from one or more characters to zero or more characters) should give the same result but it does not:
sed -E '$!N;/(.*)n1/!P;D' <<IN
one
one_more
two
two_more
IN
prints just one line
two_more
It appears to work fine in the left hand side of a substitution e.g.
sed -E '$!N;s/(.*)n1/1/' <<IN
one
one_more
two
two_more
IN
prints
one_more
two_more
just not in a context address...
What's going on here ?
1: I'm using ERE for simplicity/readability, the same happens when using BRE
sed regular-expression
add a comment |Â
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I was playing around with sed
after answering another question and I noticed that .+
and .*
are not giving the same result when they both match multiple characters in a context address.
The following command1:
sed -E '$!N;/(.+)n1/!P;D' <<IN
one
one_more
two
two_more
IN
prints
one_more
two_more
OK, that's the expected output.
Changing the regex from .+
to .*
(i.e. from one or more characters to zero or more characters) should give the same result but it does not:
sed -E '$!N;/(.*)n1/!P;D' <<IN
one
one_more
two
two_more
IN
prints just one line
two_more
It appears to work fine in the left hand side of a substitution e.g.
sed -E '$!N;s/(.*)n1/1/' <<IN
one
one_more
two
two_more
IN
prints
one_more
two_more
just not in a context address...
What's going on here ?
1: I'm using ERE for simplicity/readability, the same happens when using BRE
sed regular-expression
I was playing around with sed
after answering another question and I noticed that .+
and .*
are not giving the same result when they both match multiple characters in a context address.
The following command1:
sed -E '$!N;/(.+)n1/!P;D' <<IN
one
one_more
two
two_more
IN
prints
one_more
two_more
OK, that's the expected output.
Changing the regex from .+
to .*
(i.e. from one or more characters to zero or more characters) should give the same result but it does not:
sed -E '$!N;/(.*)n1/!P;D' <<IN
one
one_more
two
two_more
IN
prints just one line
two_more
It appears to work fine in the left hand side of a substitution e.g.
sed -E '$!N;s/(.*)n1/1/' <<IN
one
one_more
two
two_more
IN
prints
one_more
two_more
just not in a context address...
What's going on here ?
1: I'm using ERE for simplicity/readability, the same happens when using BRE
sed regular-expression
sed regular-expression
asked 41 mins ago
don_crissti
48.1k15127157
48.1k15127157
add a comment |Â
add a comment |Â
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
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
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f477595%2fn-1-works-but-n-1-doesnt-when-they-should-both-work%23new-answer', 'question_page');
);
Post as a guest
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
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
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