“sed”将反斜杠插入文件

时间:2017-12-20 22:54:49

标签: windows bash sed

工具:适用于Windows的Git Bash

问题:尝试在目录中的每个文件的顶部插入文本“\ connect central”。

代码

for f in $DIR/*.sql; do
  sed -i "1i \\\connect central" $f
done

这确实尝试编辑内联并插入我的文本,但是三个反斜杠(比如我到处都读过)并没有像我预期的那样创建单个反斜杠。相反,我得到:

enter image description here

我也尝试了一些变体:

for f in $DIR/*.sql; do
  sed -i -e "1i `\\\connect central`" $f
done

但会引发错误sed: -e expression #1, char 3: expected \ after a',c', i'`

1 个答案:

答案 0 :(得分:3)

使用单引号而不是双引号。反斜杠是双引号内的转义字符,因此您需要将其加倍以将其传递给sed -i '1i \\\connect central' "$f" 命令。它在单引号内没有特殊含义。

sed -i "1i \\\\\\connect central" "$f"

要使用双引号(如果您要插入的字符串中存在可变内容,可能需要它),则必须将所有反斜杠加倍:

{{1}}

有关详细信息,请参阅Difference between single and double quotes in Bash