在行首插入带有 sed 的文本会出错

Inserting text with sed at start of line gives error

我正在尝试使用 sed 修改文件,但出现我不理解的错误:

sed: -e expression #1, char 0: no previous regular expression

命令:

sed -e 's/^/"asset\//' example.txt

示例文件:

joe
john
peter

sed 来自 msys2:

which sed

sed is an external : C:\msys64\usr\bin\sed.exe

在每行的末尾添加文本时,以下内容按预期工作:

sed -e 's/$/",/' y.txt

joe",
john",
peter",

我不知道这里出了什么问题。

编辑(cygwin 上的解决方案): 尝试在 cygwin sed 上进行以下操作,刚刚在系统上测试过并且有效从命令提示符很好。在 sed 中使用 ' 单引号时,我得到了与 OP 相同的错误,但是在 sed 中使用 " 时,我能够得到 [=13= 的正确行为](预期一个,在每行前添加 "

sed -E "s/^/\"/"  Input_file


EDIT2(参考 tripleee 的评论): 您还可以将 sed 命令保存到名为 file 的文件中使用命令 s/^/\"/ 然后 运行 sed 代码,用 cygwin sed.

成功测试
sed -f file Input_file


替代解决方案(经过测试并在 cygwin 上工作): 我没有 cygwin,所以无法对其进行测试,尽管您提到的解决方案适用于 BASH。您能否尝试使用另一种方法一次?我刚刚也在 cygwin 上测试了这个解决方案,它在那里运行良好(编辑评论)。

sed 's/\(.*\)/"/' Input_file