我有一个包含以下格式数据的配置文件 (gpsd.default
):
# If you must specify a non-NMEA driver, uncomment and modify the next line
GPSD_SOCKET="/var/run/gpsd.sock"
GPSD_OPTIONS=""
GPS_DEVICES=""
我正在使用 sed 对文件进行更改:
sed -i 's/^GPS_DEVICES="".*/GPS_DEVICES="dev/ttyUSB1"/' /etc/default/gpsd.default
or
sed -i '4s/^.*/GPS_DEVICES="dev/ttyUSB1"/' /etc/default/gpsd.default
上面的sed
命令返回错误:
sed: bad option in substitution expression
因为新行的表达式中包含“/
”。
如何更新我的 sed
命令以使其工作?
最佳答案
这是因为您正在使用包含 /
的正则表达式,它与 sed
用作分隔符的字符相同。
只需将 sed
分隔符更改为另一个分隔符,例如 ~
:
sed -i 's~^GPS_DEVICES="".*~GPS_DEVICES="dev/ttyUSB1"~' /etc/default/gpsd.default
顺便说一下,由于您正在更改 /etc
中的文件,您可能需要使用 -i.bak
,以便备份原始文件。防止丢失重要信息是一种很好的做法。
关于linux - Sed 错误 : bad option in substitution expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30050923/