sed: fix handling of s/// which has empty matches
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
3a9365e273
commit
e39afe1fbd
@ -741,7 +741,7 @@ static int do_subst_command(sed_cmd_t *sed_cmd, char **line_p)
|
|||||||
* The match_count check is so not to break
|
* The match_count check is so not to break
|
||||||
* echo "hi" | busybox sed 's/^/!/g'
|
* echo "hi" | busybox sed 's/^/!/g'
|
||||||
*/
|
*/
|
||||||
if (!G.regmatch[0].rm_so && !G.regmatch[0].rm_eo && match_count) {
|
if (!G.regmatch[0].rm_so && !G.regmatch[0].rm_eo && match_count && *line) {
|
||||||
pipe_putc(*line++);
|
pipe_putc(*line++);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@ testing "sed accepts multiple -e" "sed -e 'i\' -e '1' -e 'a\' -e '3'" \
|
|||||||
|
|
||||||
# substitutions
|
# substitutions
|
||||||
testing "sed -n" "sed -n -e s/foo/bar/ -e s/bar/baz/" "" "" "foo\n"
|
testing "sed -n" "sed -n -e s/foo/bar/ -e s/bar/baz/" "" "" "foo\n"
|
||||||
|
testing "sed with empty match" "sed 's/z*//g'" "string\n" "" "string\n"
|
||||||
testing "sed s//p" "sed -e s/foo/bar/p -e s/bar/baz/p" "bar\nbaz\nbaz\n" \
|
testing "sed s//p" "sed -e s/foo/bar/p -e s/bar/baz/p" "bar\nbaz\nbaz\n" \
|
||||||
"" "foo\n"
|
"" "foo\n"
|
||||||
testing "sed -n s//p" "sed -ne s/abc/def/p" "def\n" "" "abc\n"
|
testing "sed -n s//p" "sed -ne s/abc/def/p" "def\n" "" "abc\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user