Variable in sed
Clash Royale CLAN TAG#URR8PPP
I have a file that contains filenames with absolute path.
In the middle of that path, is a variable directory, whenever I hard code the variable part, it works fine, but when I replace it with the variable name, the sed
part doesn't work.
The sed
part is to delete the pattern or for this matter, the path.
file=`echo $one_file | sed 's:/dir1/dir2/$VAR/last_dir/::'`
shell-script sed filenames quoting
add a comment |
I have a file that contains filenames with absolute path.
In the middle of that path, is a variable directory, whenever I hard code the variable part, it works fine, but when I replace it with the variable name, the sed
part doesn't work.
The sed
part is to delete the pattern or for this matter, the path.
file=`echo $one_file | sed 's:/dir1/dir2/$VAR/last_dir/::'`
shell-script sed filenames quoting
Try to replace single quotes with double quotes in your sed expression.
– dnk
Nov 7 '13 at 9:06
add a comment |
I have a file that contains filenames with absolute path.
In the middle of that path, is a variable directory, whenever I hard code the variable part, it works fine, but when I replace it with the variable name, the sed
part doesn't work.
The sed
part is to delete the pattern or for this matter, the path.
file=`echo $one_file | sed 's:/dir1/dir2/$VAR/last_dir/::'`
shell-script sed filenames quoting
I have a file that contains filenames with absolute path.
In the middle of that path, is a variable directory, whenever I hard code the variable part, it works fine, but when I replace it with the variable name, the sed
part doesn't work.
The sed
part is to delete the pattern or for this matter, the path.
file=`echo $one_file | sed 's:/dir1/dir2/$VAR/last_dir/::'`
shell-script sed filenames quoting
shell-script sed filenames quoting
edited Nov 7 '13 at 22:15
Gilles
544k12811071622
544k12811071622
asked Nov 7 '13 at 8:52
bostjanbostjan
382
382
Try to replace single quotes with double quotes in your sed expression.
– dnk
Nov 7 '13 at 9:06
add a comment |
Try to replace single quotes with double quotes in your sed expression.
– dnk
Nov 7 '13 at 9:06
Try to replace single quotes with double quotes in your sed expression.
– dnk
Nov 7 '13 at 9:06
Try to replace single quotes with double quotes in your sed expression.
– dnk
Nov 7 '13 at 9:06
add a comment |
1 Answer
1
active
oldest
votes
When you use single-quotes, aka hard quotes, variable names are not expanded. You would need to use double-quotes, aka soft quotes.
sed "s:/dir1/dir2/$var/Last_dir/::"
or escape the quotes:
sed 's:/dir1/dir2/'"$var"'/Last_dir/::'
You would also need to be sure that $var
does not hold any colon, dot, star, [
, newline or backslash characters or that, if it does, they are escaped.
$ s="foo|bar" ; echo foobar | sed 's#.*#'"$s"'#;' works...??
– jirib
Nov 7 '13 at 9:09
@JiriXichtkniha: Yes, but if there is a#
, newline etc. you would have trouble.
– Runium
Nov 7 '13 at 9:13
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%2f99190%2fvariable-in-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
When you use single-quotes, aka hard quotes, variable names are not expanded. You would need to use double-quotes, aka soft quotes.
sed "s:/dir1/dir2/$var/Last_dir/::"
or escape the quotes:
sed 's:/dir1/dir2/'"$var"'/Last_dir/::'
You would also need to be sure that $var
does not hold any colon, dot, star, [
, newline or backslash characters or that, if it does, they are escaped.
$ s="foo|bar" ; echo foobar | sed 's#.*#'"$s"'#;' works...??
– jirib
Nov 7 '13 at 9:09
@JiriXichtkniha: Yes, but if there is a#
, newline etc. you would have trouble.
– Runium
Nov 7 '13 at 9:13
add a comment |
When you use single-quotes, aka hard quotes, variable names are not expanded. You would need to use double-quotes, aka soft quotes.
sed "s:/dir1/dir2/$var/Last_dir/::"
or escape the quotes:
sed 's:/dir1/dir2/'"$var"'/Last_dir/::'
You would also need to be sure that $var
does not hold any colon, dot, star, [
, newline or backslash characters or that, if it does, they are escaped.
$ s="foo|bar" ; echo foobar | sed 's#.*#'"$s"'#;' works...??
– jirib
Nov 7 '13 at 9:09
@JiriXichtkniha: Yes, but if there is a#
, newline etc. you would have trouble.
– Runium
Nov 7 '13 at 9:13
add a comment |
When you use single-quotes, aka hard quotes, variable names are not expanded. You would need to use double-quotes, aka soft quotes.
sed "s:/dir1/dir2/$var/Last_dir/::"
or escape the quotes:
sed 's:/dir1/dir2/'"$var"'/Last_dir/::'
You would also need to be sure that $var
does not hold any colon, dot, star, [
, newline or backslash characters or that, if it does, they are escaped.
When you use single-quotes, aka hard quotes, variable names are not expanded. You would need to use double-quotes, aka soft quotes.
sed "s:/dir1/dir2/$var/Last_dir/::"
or escape the quotes:
sed 's:/dir1/dir2/'"$var"'/Last_dir/::'
You would also need to be sure that $var
does not hold any colon, dot, star, [
, newline or backslash characters or that, if it does, they are escaped.
edited Nov 7 '13 at 9:53
Stéphane Chazelas
312k57589946
312k57589946
answered Nov 7 '13 at 9:06
RuniumRunium
18.8k43060
18.8k43060
$ s="foo|bar" ; echo foobar | sed 's#.*#'"$s"'#;' works...??
– jirib
Nov 7 '13 at 9:09
@JiriXichtkniha: Yes, but if there is a#
, newline etc. you would have trouble.
– Runium
Nov 7 '13 at 9:13
add a comment |
$ s="foo|bar" ; echo foobar | sed 's#.*#'"$s"'#;' works...??
– jirib
Nov 7 '13 at 9:09
@JiriXichtkniha: Yes, but if there is a#
, newline etc. you would have trouble.
– Runium
Nov 7 '13 at 9:13
$ s="foo|bar" ; echo foobar | sed 's#.*#'"$s"'#;' works...??
– jirib
Nov 7 '13 at 9:09
$ s="foo|bar" ; echo foobar | sed 's#.*#'"$s"'#;' works...??
– jirib
Nov 7 '13 at 9:09
@JiriXichtkniha: Yes, but if there is a
#
, newline etc. you would have trouble.– Runium
Nov 7 '13 at 9:13
@JiriXichtkniha: Yes, but if there is a
#
, newline etc. you would have trouble.– Runium
Nov 7 '13 at 9:13
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%2f99190%2fvariable-in-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
Try to replace single quotes with double quotes in your sed expression.
– dnk
Nov 7 '13 at 9:06