【发布时间】:2014-04-23 15:22:07
【问题描述】:
我在 Ubuntu 中使用 sed 命令来制作 shell 脚本。
我有一个问题,因为我插入的字符串既有单引号也有双引号。破折号也。这是一个例子:
sed -i "16i$('#myTable td:contains("Trunk do SW-BG-26, GigabitEthernet0/22")').parents("tr").remove();" proba.txt
应该插入
$('#myTable td:contains("Trunk do SW-BG-26, GigabitEthernet0/22")').parents("tr").remove();
在 proba.txt 文件的第 16 行
但它会插入
$('#myTable td:contains(
因为它过早退出。如何解决这个问题,我在现场找不到解决方案,因为我有两个引号,并且只有一种解释。
第二次尝试
除了最外面的双引号外,我在每个双引号前面都设置了 \,但我仍然没有得到我想要的。结果是:
.parents("tr").remove();
然后我把 \ 也放在每个 ' 前面,但结果是脚本出错。这是第 4 行:
sed -i "16i$(\'#myTable td:contains(\"QinQ隧道-SCnet无线\")\').parents(\"tr\").remove();" proba.txt
这是错误:
4:skripta.sh:语法错误:“(”意外(预期“)”)
如果该行有“,”,/?
第三次是魅力
昨天插入很多行我在使用 sed 时遇到了另一个问题。我想插入这段文字:
$(document).ready(function() {
使用命令:
sed -i "16i$(document).ready(function() {" proba.txt
结果我得到这个作为文档插入的文本是特殊的,或者是因为 $:
.ready(函数() {
对此有什么想法吗?
【问题讨论】:
-
stackoverflow.com/q/11995353 ... 使用反斜杠转义双引号。
-
双引号之后还是之前的反斜杠?编辑:对不起,我没有看到那个链接。我试试看。
-
反斜杠在引号之前。您必须在每个报价中使用它(可能最外面的报价除外)。
-
除了最外面的双引号外,我在每个双引号前面都设置了 \,但我仍然没有得到我想要的。结果是:.parents("tr").remove();然后我把 \ 也放在每个 ' 前面,但结果是脚本错误。这是第 4 行: sed -i "16i$(\'#myTable td:contains(\"QinQ tunnel - SCnet wireless\")\').parents(\"tr\").remove();" proba.txt 这是错误:4:skripta.sh:语法错误:“(”意外(预期“)”)