将 sed 命令写入多行

将 sed 命令写入多行

我正在努力学习sed,遇到这样的情况

$ echo "abcd" | sed -n "/b/p"
abcd

它工作正常,

$ echo "abcd" | sed -n "
→ /b/p"
abcd

又好了,但是

$ echo "Abcd" | sed -n "/b
/p"
sed: -e expression #1, char 2: unterminated address regex

错误报告有什么问题?

答案1

/b/p是一个完整的 sed 命令。每个 sed 命令都需要位于一行上。当您/b在一行上输入时,sed 会将其视为语法错误。你可以尝试通过

echo "abcd" | sed -n "/b"

并查看结果。你也可以尝试

echo "abcd" | sed -n "/b/p
> p"

并观察该命令完成后,下一条命令生效。

答案2

sed模式基本上是基于行的,因此它期望第二个斜杠与第一个斜杠位于同一行。从info sed

SCRIPT 或 SCRIPT-FILE 中的命令可以用分号 (';') 或换行符 (ASCII 10) 分隔。

答案3

Linux 中的大多数命令基本上都是基于行的,因此它期望第二个斜杠与第一个斜杠位于同一行。如果您要为第三个工作,您可以使用以下内容

$ echo "Abcd" | sed -n "/b\
 /p"
 Abcd

相关内容