我有一个配置文件(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