2017-06-06 95 views
0

我有一些文件的目錄,當我grep一些字符串,我得到如下結果。Linux - 如何替換一些帶有大括號的字符串?

腳本/ FileReplace>grep -r "case" *

DIR1/file2的:的情況下的 'A'

DIR2/file3的:的情況下 「SSSS」

file1的:殼體1

我使用替換cmd後,我希望字符串更新如下

CASE( 'A')

CASE( 「SSSS」)

CASE(1)

即,, 「的情況下」 被替換爲 「CASE」 和文字的空間被封閉在後大括號如上。

任何建議我怎麼可以用shell cmd做到這一點。

+0

您可以使用'find + sed'或'grep -rlZ ... | xargs -0 sed..' – Sundeep

回答

3

您可以使用sed及其替代:

find . -type f -exec sed -i 's/case \(.\+\)/CASE (\1)/' {} + 
  • .\+匹配任何有至少一個字符。
  • \(...\)創建一個捕獲組,您可以引用第一個捕獲組爲\1
  • -i~一起運行而不是-i將創建文件的備份;特別是如果你只是在做實驗的話。
+0

@Sundeep:我不確定'case'是否應該被'CASE )'。 – choroba

+0

是的,這是一個角落的情況下,但OP確實與'grep'一起使用'case'。 – Sundeep

相關問題