Vis*_*air 0 linux script bash sed command-line
例如:- 我有一个名为 file.txt 的文件
$ cat file.txt
$key
Run Code Online (Sandbox Code Playgroud)
我有一个环境变量,例如:文本文件中的 $key
让我们说 $key = 1234,所以我可以用下面的命令替换该值
sed -i 's/$key/'"$key"'/' file.txt
Run Code Online (Sandbox Code Playgroud)
它变成
$ cat file.txt
1234
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果值
$key = 1/2/3/4
Run Code Online (Sandbox Code Playgroud)
我无法运行以下命令
sed -i 's/$key/'"$key"'/' file.txt
Run Code Online (Sandbox Code Playgroud)
它会报错
sed: bad option in substitution expression
Run Code Online (Sandbox Code Playgroud)
因为斜线它正在打破。我可以通过直接给出值来解决它,但我不想以这种方式使用它。
sed -i 's/$key/1\/2\/3\/4/' file.txt
Run Code Online (Sandbox Code Playgroud)
问题与sed分隔符是这样的事实有关,/并且它与$key. 要解决它,请使用另一个分隔符。例如#:
$ key="1/2/3/4"
$ echo 1/2/3/4 | sed "s#$key#\"$key\"#"
"1/2/3/4"
Run Code Online (Sandbox Code Playgroud)
或者
$ echo "hello this is 1/2/3/4 yeah" | sed "s#$key#\"$key\"#"
hello this is "1/2/3/4" yeah
Run Code Online (Sandbox Code Playgroud)
有趣的阅读:您可以在 sed 中使用哪些分隔符?. 剧透:几乎所有东西!
| 归档时间: |
|
| 查看次数: |
5492 次 |
| 最近记录: |