作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有这个命令,它创建一行的副本并更改一些子字符串:
之前测试文件内容:
;push "route 192.168.20.0 255.255.255.0"
工作命令:
sed -i -e '/;push "route 192.168.20.0 255.255.255.0"/ a push "route
172.31.0.0 255.255.0.0"' test
测试文件内容之后:
;push "route 192.168.20.0 255.255.255.0"
push "route 172.31.0.0 255.255.0.0"
现在,如果我有一个 var=172.31.0.0
,我该如何在这种情况下使用它,当我这样说时:
sed -i -e '/;push "route 192.168.20.0 255.255.255.0"/ a push "route $var 255.255.0.0"' test
我明白了:
;push "route 192.168.20.0 255.255.255.0"
push "route $var 255.255.0.0"
我知道单引号使它里面的所有东西都是文字字符串,现在我怎么能在这里使用变量呢?感谢您的帮助。
最佳答案
几个不同的选项。
转义字符串周围的 ""
。
\"route 192.68.20.0. 255.255.0\"
例子,
$ var="172.31.0.0"
$ echo ';push "route 192.168.20.0 255.255.255.0"' \
| sed -e "/;push \"route 192.168.20.0 255.255.255.0\"/ a push \"route $var 255.255.0.0\""
;push "route 192.168.20.0 255.255.255.0"
push "route 172.31.0.0 255.255.0.0"
或
当 $var
在带双引号的字符串中定义时,用单引号括起来。
$ echo ';push "route 192.168.20.0 255.255.255.0"' \
| sed -e '/;push "route 192.168.20.0 255.255.255.0"/ a push "route '$var' 255.255.0.0"'
;push "route 192.168.20.0 255.255.255.0"
push "route 172.31.0.0 255.255.0.0"
关于linux - 如何在 sed 中使用单引号和双引号变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48508081/
我是一名优秀的程序员,十分优秀!