工具:适用于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'的错误
使用单引号而不是双引号。反斜杠是双引号内的转义字符,因此您需要将其加倍以将其传递给sed
命令。它在单引号内没有特殊含义。
sed -i '1i \\\connect central' "$f"
要使用双引号(如果您要插入的字符串中有可变内容,可能需要它),则必须将所有反斜杠加倍:
sed -i "1i \\\\\\connect central" "$f"
有关更多信息,请参阅Difference between single and double quotes in Bash