sed 脚本的“'s' 命令的 RHS 上的引用无效 \1”错误

-2 sed text-processing

例如,这是 md5sum 命令输出:

35c9581c469c366e286be708a9d9f939 input.txt
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的命令行:

md5sum input.txt | sed -f script.sed
Run Code Online (Sandbox Code Playgroud)

我想让 md5sum 的输出看起来像这样:

35c9xxxxxxxxxxxxxxxxxxxxxxxxxxxx input.txt
Run Code Online (Sandbox Code Playgroud)

目前,我的 .sed 脚本包含以下内容:

:a s/^(.{4}x{0,})[^x ]/\1x/;ta
Run Code Online (Sandbox Code Playgroud)

我不断收到此错误

sed: file script.sed line 2: invalid reference \1 on `s' command's RHS
Run Code Online (Sandbox Code Playgroud)

我不知道为什么。如果有人知道如何解决它,或者更好的方法,请告诉我。

pLu*_*umo 5

您需要使用扩展正则表达式(sed -E如果可用)转义大括号和括号:

:a s/^\(.\{4\}x\{0,\}\)[^x ]/\1x/;ta
Run Code Online (Sandbox Code Playgroud)