【发布时间】:2016-08-08 13:53:30
【问题描述】:
由于在 FreeBSD 中实现的 sed 不支持替换模式中的任何转义序列,我必须使用 "\'$'\n" 来表示换行符和 "'$ '\n”。它确实支持“\”的反斜杠。
不幸的是,将换行符与反斜杠结合起来会导致我出错。例如,我想添加一行以制表符开头和“添加的行。\”在每行之后带有“key:\”,我写道:
#!/bin/bash
sed -E 's/^key:\\$/&\'$'\n'$'\tline added.\\/g' file
它给我一个错误,例如:
sed: 2: "s/^key:\\$/&\
line add ...": unterminated substitute in regular expression
如何在 sed 的替换参数中同时使用换行符和反斜杠?
非常感谢!
【问题讨论】:
-
你可以使用 var
my_replacement和类似s/^key:\\$/&'"${my_replacement}""/' file的东西吗?还是使用 awk? -
FreeBSD 没有
#!/bin/bash(除非是手动添加的),为了便于移植使用#!/bin/sh或#!/usr/bin/env bash。 -
This answer 涵盖了很多领域,包括 BSD sed 中的换行符。
-
感谢您的提醒。它实际上是一个 FreeNAS 盒子,在 /bin 上有一个指向 /usr/local/bin/bash 的软链接。