0
我試圖執行遞歸搜索並替換多個文件中的文件內容。搜索並替換unix命令行,perl捕獲組爲空
鑑於以下若干文件:
example:{
something: 'ha',
somethingElse: 'ah'
}
我想直到結束:
example:{
something: 'ha',
somethingElse: 'ah',
somethingNew: 'ah ha'
}
在Mac OS X,我想從以下命令行從在一個父目錄中:
find . -type f -exec perl -p -i -e "s/somethingElse:(.*)/somethingElse:$1,\n\tsomethingNew: 'ah ha'/g" {} \;
它幾乎工作,除了捕獲組被解釋爲空白導致我n:
example:{
something: 'ha',
somethingElse:,
somethingNew: 'ah ha'
}
什麼問題?
而且不依賴於perl
,我不介意的替代方法(可以使用sed
例如)
您需要使用單引號。 $ 1在perl之前由bash解釋,因此perl在看到它時是空的。或者只是逃避它,因爲你在替換中使用單引號。 '\ $' – 123
謝謝@ 123這也是一種替代修復 –
看起來有點像JSON或其他結構化數據格式。是嗎?因爲如果是這樣,正則表達式可能不是工作的工具。 – Sobrique