“sed”将反斜杠插入文件

问题描述 投票:0回答:1

工具:适用于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 \ aftera',c',i'的错误

windows bash sed
1个回答
3
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.