2015-04-22 24 views
0

我有,我想另一個腳本能夠修改autoexec.py文件中的一行:在文件更改線路的特定部分使用sed

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

我想用SED覆蓋的PlayMedia()內的值取決於特定條件。

是否可以使用sed來觸碰並覆蓋PlayMedia()括號之間的部分?或者需要進一步處理/正則表達式?

+0

所以你要更換什麼是內'PlayMedia()'?當然,'sed'就足夠了。提供更多關於你想要做什麼的細節:該行在文件中出現多次?它必須是一條道路嗎?你想用變量給出的內容來替換還是隻是硬編碼的內容? – fedorqui

+0

它只是一個參考,它是一個播放列表文件的路徑。我只需要修改PlayMedia()中的值 –

回答

2

您可以使用sed。下面的代碼將用foo替換PlayMedia字符串後面括號內的字符。

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

如果要替換的字符串是路徑,則必須使用不同的sed分隔符,因爲filepath可能包含正斜槓。

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

例子:

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

這很好。謝謝! –

+0

不客氣。 –

+0

只是一個註釋,這引發sed:當foo是/ path /到/ something –