另一个未终止的 's' 命令

use*_*571 1 scripting sed shell-script

我正在尝试对 IPv4 地址脚本进行简单的替换。

sed "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/192.100.100.100/g"
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的。如标题所述,我收到了一个未终止的“s”命令。

编辑:我在 Windows 上运行,通过 ssh 连接到 Unix 机器。

我原来有:

 sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/192.100.100.100/g'
Run Code Online (Sandbox Code Playgroud)

但是我将它从单引号更改为双引号,因为某些内容可能没有按预期读取,这可能导致了我的错误。我对其进行了测试,结果仍然是“未终止的‘s’命令”。

任何想法或建议都会很棒!

整个脚本

#!/bin/sed -f

#sed 's/[^@ ]*@[^@]*\.[^@ ]*\.[^@]*/account@example.com/g'

#sed 's/[^@]*\.[^@]*\.[^@]*/example.com/g'

sed "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/192.100.100.100/g"
Run Code Online (Sandbox Code Playgroud)

示例文件输入:

sed "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/192.100.100.100/g"
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 5

您的脚本是sed脚本,而不是 shell 脚本。所以你不需要放在sed行首,或者在命令周围加上引号。将其更改为:

#!/bin/sed -f

s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/192.100.100.100/g
Run Code Online (Sandbox Code Playgroud)