不服从\ t或实际标签

时间:2014-05-27 20:18:22

标签: linux bash sed

我已经看过很多这个问题而且我已经尝试了所有我发现的东西,但仍然无法让它发挥作用。

我正在尝试在虚拟主机文件中添加一个新行,用于管理别名并正确标记新条目的脚本。

我检查过它后,我会添加别名。

我的最后一次尝试:(仍然没有标签..我实际上有两个标签)

sed -i "/ServerAlias www.$account/a         $newAlias" "$VHOST_FILE"

这里再次使用单个标签

sed -i "/ServerAlias www.$account/a     $newAlias" "$VHOST_FILE"

我也尝试过:(这些都用t加前缀,而不是使用标签)

sed -i "/ServerAlias www.$account/a \t$newAlias" "$VHOST_FILE"
sed -i "/ServerAlias www.$account/a \\t$newAlias" "$VHOST_FILE"
sed -i "/ServerAlias www.$account/a\t$newAlias" "$VHOST_FILE"
sed -i "/ServerAlias www.$account/a\\t$newAlias" "$VHOST_FILE"

我在这里缺少什么?

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

你关闭了。问题是\\成为双引号中的文字\,因此\\t\t变成了同一个东西。

逃离它们以获得您想要的结果:

sed -i "/ServerAlias www.$account/a \\\\t$newAlias" "$VHOST_FILE"

答案 1 :(得分:0)

在bash中,您可以使用$'\t'插入标签。

sed "/ServerAlias www.$account/a"$'\t'"$newAlias" "$VHOST_FILE"

答案 2 :(得分:0)

有很多方法可以完成同样的事情。最好的方法是使用您可以轻松理解的内容:

line=$'\t'"$newAlias" # a tab followed by contents of newAlias
sed "/ServerAlias www.$account/a $line" "$VHOST_FILE"

然后在你很好地掌握了正在发生的事情后再将这些(下次)结合起来。