replace a substring using sed
I have a sample input file:
$ cat test.txt
xz:xx.d.r1.latest
Now I want to replace a part with new value. For ex: I wanted to replace r1
with r2
in the above text so the new o/p would be
xz:xx.d.r2.latest
I wanted to do this using variables. For example, consider the value to be replaced stored in variable old
and the value to be replaced with in variable new
:
$ old=r1
$ new=r2
Now for replacing, I tried
sed -i 's/'"${old}"'/'"${new}"'/g' test.txt
sed -i "s/$old}/${new}/g" test.txt
sed -i 's/'"$old"'/'"$new"'/g' test.txt
sed -i "s/${old}/${new}/g" test.txt
But none of them worked the value is not being replaced. So can anyone help me or tell whether the syntax is correct or what I am missing.
bash shell sed
|
show 2 more comments
I have a sample input file:
$ cat test.txt
xz:xx.d.r1.latest
Now I want to replace a part with new value. For ex: I wanted to replace r1
with r2
in the above text so the new o/p would be
xz:xx.d.r2.latest
I wanted to do this using variables. For example, consider the value to be replaced stored in variable old
and the value to be replaced with in variable new
:
$ old=r1
$ new=r2
Now for replacing, I tried
sed -i 's/'"${old}"'/'"${new}"'/g' test.txt
sed -i "s/$old}/${new}/g" test.txt
sed -i 's/'"$old"'/'"$new"'/g' test.txt
sed -i "s/${old}/${new}/g" test.txt
But none of them worked the value is not being replaced. So can anyone help me or tell whether the syntax is correct or what I am missing.
bash shell sed
All of these commands exceptsed -i "s/$old}/${new}/g" test.txt
work for me. Can you describe your problem in more details?
– Arkadiusz Drabczyk
May 16 '18 at 17:29
the values are not being replaced which I wanted. I think the command I used is not working
– DENDULURI CHAITANYA
May 16 '18 at 18:21
@ArkadiuszDrabczyk And that one didn't work cos you like he, were missing a {
– barlop
May 16 '18 at 19:16
The second and third commands are missing a { between the $ and o of ${old}
– barlop
May 16 '18 at 19:16
all four work for me(one must correct the second and third) pastebin.com/raw/dgr7dtmA
– barlop
May 16 '18 at 19:18
|
show 2 more comments
I have a sample input file:
$ cat test.txt
xz:xx.d.r1.latest
Now I want to replace a part with new value. For ex: I wanted to replace r1
with r2
in the above text so the new o/p would be
xz:xx.d.r2.latest
I wanted to do this using variables. For example, consider the value to be replaced stored in variable old
and the value to be replaced with in variable new
:
$ old=r1
$ new=r2
Now for replacing, I tried
sed -i 's/'"${old}"'/'"${new}"'/g' test.txt
sed -i "s/$old}/${new}/g" test.txt
sed -i 's/'"$old"'/'"$new"'/g' test.txt
sed -i "s/${old}/${new}/g" test.txt
But none of them worked the value is not being replaced. So can anyone help me or tell whether the syntax is correct or what I am missing.
bash shell sed
I have a sample input file:
$ cat test.txt
xz:xx.d.r1.latest
Now I want to replace a part with new value. For ex: I wanted to replace r1
with r2
in the above text so the new o/p would be
xz:xx.d.r2.latest
I wanted to do this using variables. For example, consider the value to be replaced stored in variable old
and the value to be replaced with in variable new
:
$ old=r1
$ new=r2
Now for replacing, I tried
sed -i 's/'"${old}"'/'"${new}"'/g' test.txt
sed -i "s/$old}/${new}/g" test.txt
sed -i 's/'"$old"'/'"$new"'/g' test.txt
sed -i "s/${old}/${new}/g" test.txt
But none of them worked the value is not being replaced. So can anyone help me or tell whether the syntax is correct or what I am missing.
bash shell sed
bash shell sed
edited May 16 '18 at 17:56
Arkadiusz Drabczyk
1,636711
1,636711
asked May 16 '18 at 16:54
DENDULURI CHAITANYADENDULURI CHAITANYA
1
1
All of these commands exceptsed -i "s/$old}/${new}/g" test.txt
work for me. Can you describe your problem in more details?
– Arkadiusz Drabczyk
May 16 '18 at 17:29
the values are not being replaced which I wanted. I think the command I used is not working
– DENDULURI CHAITANYA
May 16 '18 at 18:21
@ArkadiuszDrabczyk And that one didn't work cos you like he, were missing a {
– barlop
May 16 '18 at 19:16
The second and third commands are missing a { between the $ and o of ${old}
– barlop
May 16 '18 at 19:16
all four work for me(one must correct the second and third) pastebin.com/raw/dgr7dtmA
– barlop
May 16 '18 at 19:18
|
show 2 more comments
All of these commands exceptsed -i "s/$old}/${new}/g" test.txt
work for me. Can you describe your problem in more details?
– Arkadiusz Drabczyk
May 16 '18 at 17:29
the values are not being replaced which I wanted. I think the command I used is not working
– DENDULURI CHAITANYA
May 16 '18 at 18:21
@ArkadiuszDrabczyk And that one didn't work cos you like he, were missing a {
– barlop
May 16 '18 at 19:16
The second and third commands are missing a { between the $ and o of ${old}
– barlop
May 16 '18 at 19:16
all four work for me(one must correct the second and third) pastebin.com/raw/dgr7dtmA
– barlop
May 16 '18 at 19:18
All of these commands except
sed -i "s/$old}/${new}/g" test.txt
work for me. Can you describe your problem in more details?– Arkadiusz Drabczyk
May 16 '18 at 17:29
All of these commands except
sed -i "s/$old}/${new}/g" test.txt
work for me. Can you describe your problem in more details?– Arkadiusz Drabczyk
May 16 '18 at 17:29
the values are not being replaced which I wanted. I think the command I used is not working
– DENDULURI CHAITANYA
May 16 '18 at 18:21
the values are not being replaced which I wanted. I think the command I used is not working
– DENDULURI CHAITANYA
May 16 '18 at 18:21
@ArkadiuszDrabczyk And that one didn't work cos you like he, were missing a {
– barlop
May 16 '18 at 19:16
@ArkadiuszDrabczyk And that one didn't work cos you like he, were missing a {
– barlop
May 16 '18 at 19:16
The second and third commands are missing a { between the $ and o of ${old}
– barlop
May 16 '18 at 19:16
The second and third commands are missing a { between the $ and o of ${old}
– barlop
May 16 '18 at 19:16
all four work for me(one must correct the second and third) pastebin.com/raw/dgr7dtmA
– barlop
May 16 '18 at 19:18
all four work for me(one must correct the second and third) pastebin.com/raw/dgr7dtmA
– barlop
May 16 '18 at 19:18
|
show 2 more comments
1 Answer
1
active
oldest
votes
In case you're using BSD's sed
(e.g. on macOS), -i
option is a non-standard FreeBSD extension and it requires an argument. So to make sure you're using the right cross-compatible syntax, you should change it to:
sed -i'.bak' ... # rest of the command
Other than that, your commands are fine. E.g.
sed -i'.bak' 's/'"${old}"'/'"${new}"'/g' test.txt
Tested in Bash shell on WSL (Ubuntu on Windows).
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
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: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
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%2fsuperuser.com%2fquestions%2f1323286%2freplace-a-substring-using-sed%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
In case you're using BSD's sed
(e.g. on macOS), -i
option is a non-standard FreeBSD extension and it requires an argument. So to make sure you're using the right cross-compatible syntax, you should change it to:
sed -i'.bak' ... # rest of the command
Other than that, your commands are fine. E.g.
sed -i'.bak' 's/'"${old}"'/'"${new}"'/g' test.txt
Tested in Bash shell on WSL (Ubuntu on Windows).
add a comment |
In case you're using BSD's sed
(e.g. on macOS), -i
option is a non-standard FreeBSD extension and it requires an argument. So to make sure you're using the right cross-compatible syntax, you should change it to:
sed -i'.bak' ... # rest of the command
Other than that, your commands are fine. E.g.
sed -i'.bak' 's/'"${old}"'/'"${new}"'/g' test.txt
Tested in Bash shell on WSL (Ubuntu on Windows).
add a comment |
In case you're using BSD's sed
(e.g. on macOS), -i
option is a non-standard FreeBSD extension and it requires an argument. So to make sure you're using the right cross-compatible syntax, you should change it to:
sed -i'.bak' ... # rest of the command
Other than that, your commands are fine. E.g.
sed -i'.bak' 's/'"${old}"'/'"${new}"'/g' test.txt
Tested in Bash shell on WSL (Ubuntu on Windows).
In case you're using BSD's sed
(e.g. on macOS), -i
option is a non-standard FreeBSD extension and it requires an argument. So to make sure you're using the right cross-compatible syntax, you should change it to:
sed -i'.bak' ... # rest of the command
Other than that, your commands are fine. E.g.
sed -i'.bak' 's/'"${old}"'/'"${new}"'/g' test.txt
Tested in Bash shell on WSL (Ubuntu on Windows).
answered Feb 22 at 14:45
kenorbkenorb
11.5k1580116
11.5k1580116
add a comment |
add a comment |
Thanks for contributing an answer to Super User!
- 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%2fsuperuser.com%2fquestions%2f1323286%2freplace-a-substring-using-sed%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
All of these commands except
sed -i "s/$old}/${new}/g" test.txt
work for me. Can you describe your problem in more details?– Arkadiusz Drabczyk
May 16 '18 at 17:29
the values are not being replaced which I wanted. I think the command I used is not working
– DENDULURI CHAITANYA
May 16 '18 at 18:21
@ArkadiuszDrabczyk And that one didn't work cos you like he, were missing a {
– barlop
May 16 '18 at 19:16
The second and third commands are missing a { between the $ and o of ${old}
– barlop
May 16 '18 at 19:16
all four work for me(one must correct the second and third) pastebin.com/raw/dgr7dtmA
– barlop
May 16 '18 at 19:18