工具:适用于Windows的Git Bash
问题:尝试在目录中的每个文件的顶部插入文本“\ connect central”。
代码:
for f in $DIR/*.sql; do
sed -i "1i \\\connect central" $f
done
这确实尝试编辑内联并插入我的文本,但是三个反斜杠(比如我到处都读过)并没有像我预期的那样创建单个反斜杠。相反,我得到:
我也尝试了一些变体:
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'`
答案 0 :(得分:3)
使用单引号而不是双引号。反斜杠是双引号内的转义字符,因此您需要将其加倍以将其传递给sed -i '1i \\\connect central' "$f"
命令。它在单引号内没有特殊含义。
sed -i "1i \\\\\\connect central" "$f"
要使用双引号(如果您要插入的字符串中存在可变内容,可能需要它),则必须将所有反斜杠加倍:
{{1}}
有关详细信息,请参阅Difference between single and double quotes in Bash