Tool:Windows 版 Git Bash
Problem:尝试在目录中每个文件的顶部插入文本“\connectcentral”。
Code:
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"
有关更多信息,请参阅Bash 中单引号和双引号的区别 https://stackoverflow.com/questions/6697753/difference-between-single-and-double-quotes-in-bash
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)