这个 sed 命令中转义的换行符有什么问题?

Utk*_*tku 1 sed

我正在尝试text += num.toString(16);使用 sed 在每行之后添加该行。

我的做法是:Replace every new line with a new line, plus text += num.toString(16);。那是:

sed 's/\
/\
text \+= num\.toString\(16\);/g'
Run Code Online (Sandbox Code Playgroud)

但我无法让这个工作。我正在unterminated substitute pattern从 sed获取。

这里有什么问题?

我正在使用 BSD sed。

cuo*_*glm 5

你不能使用:

s/\
/
Run Code Online (Sandbox Code Playgroud)

s/pattern/replacement/表单中匹配模式空间中的换行符。这取决于解释该模式的实现。GNU sed 和 BSD sed 都将其视为文字换行符,但 BSD sed不接受会引发错误

通常,您不能在输入行的末尾\n匹配换行符,但是您可以使用来匹配作为N命令结果出现在模式空间中的换行符。

正确的方法,POSIXLY:

sed 'a\
text += num.toString(16);
'
Run Code Online (Sandbox Code Playgroud)

或者:

sed 's/$/\
text += num.toString(16);/'
Run Code Online (Sandbox Code Playgroud)