Sed 错误:替换表达式中的错误选项



我有一个配置文件(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:替换表达式中的错误选项

因为新行的表达式中包含"/"。

如何更新我的sed命令以使其正常工作?

这是因为您使用的是包含/的正则表达式,该正则表达式与sed用作分隔符的字符相同。

只需将sed分隔符更改为另一个分隔符,例如~

sed -i 's~^GPS_DEVICES="".*~GPS_DEVICES="dev/ttyUSB1"~' /etc/default/gpsd.default

顺便说一下,由于您正在更改/etc中的文件,因此您可能需要使用-i.bak,以便备份原始文件。防止重要信息丢失是一种很好的做法。

您应该将 sed 命令更新为此。

sed -i 's/^GPS_DEVICES="".*/GPS_DEVICES="dev/ttyUSB1"/' /etc/default/gpsd.default

相关内容

  • 没有找到相关文章

最新更新