使用 sed 更改文件中一行的特定部分

Change specific part of a line in a file with sed

我希望另一个脚本能够修改 autoexec.py 文件中的一行:

kodi.executebuiltin("PlayMedia(/path/to/file)")

我正在考虑根据特定条件使用 sed 覆盖 PlayMedia() 中的值。

是否可以使用 sed 仅接触和覆盖 PlayMedia() 括号之间的部分而不是其他部分?或者还需要 processing/regex 吗?

你可以使用 sed。下面的代码将 PlayMedia 字符串后面括号内的字符替换为 foo.

sed 's/\b\(PlayMedia\)([^)]*)/(foo)/g' file

如果要替换的字符串是路径,则必须使用不同的 sed 定界符,因为文件路径可能包含正斜杠。

sed 's~\b\(PlayMedia\)([^)]*)~(foo)~g' file

示例:

$ echo 'kodi.executebuiltin("PlayMedia(/path/to/file)")' | sed 's/\b\(PlayMedia\)([^)]*)/(foo)/g'
kodi.executebuiltin("PlayMedia(foo)")