2015-03-02 73 views
0

我有build.gradle文件。我需要搜索字符串android {,如果找到;在下一行中,它應該回顯一些內容,如echo "signing config={..SOME CODE.....} > build.gradle。這可能嗎。使用上面的代碼,我可以從命令行回顯代碼,只在開始或結束。請幫助我。將文本添加到特定字符串之後的文件中

編輯:

例...我gradle這個文件是

buildscript { 
CODE 
} 

dependencies { 
    CODE 
} 
} 
apply plugin: 'com.android.application` 

android { 

defaultConfig { 
    CODE 
} 
} 

這裏就檢測android {作爲字符串follwing應該android {後追加如下

buildscript { 
CODE 
} 

dependencies { 
    CODE 
} 
} 
apply plugin: 'com.android.application` 

android { 

**HERE THE TEXT ADDED IN THE COMMAND SHOULD APPEAR** 
defaultConfig { 
    CODE 
} 
} 
+1

一個例子以及預期的輸出會更好。 – 2015-03-02 11:42:40

+0

@AvinashRaj按照你的建議修改了這個問題 – 2015-03-02 11:54:52

回答

1

什麼關於簡單的awk?在結束

awk '/^android/{print;print "**HERE THE TEXT ADDED IN THE COMMAND SHOULD APPEAR**";next}1' build.gradle 

'1' 可能會有點神祕,更詳細的版本:

awk '/^android/{print;print "**HERE THE TEXT ADDED IN THE COMMAND SHOULD APPEAR**";next}{print $0}' build.gradle 

就地變化:

{ rm build.gradle && awk '/^android/{print;print "**HERE THE TEXT ADDED IN THE COMMAND SHOULD APPEAR**";next}{print $0}' > build.gradle ; } < build.gradle 
+0

當我在命令行中嘗試了上面的內容時,文本就像我在命令行中想要的一樣。但是當我打開我的gradle文件時,它並沒有改變。 – 2015-03-03 09:32:51

+1

正確,awk在默認情況下無法正常工作。這裏是處理這個問題的非常典型的方法:'{rm build.gradle && awk'/^android/{print; print「**這裏添加了命令的文本應該出現**」; next} {print $ 0}' > build.gradle; } 4.1.0,則可以選擇進行就地更改(-i)。 – wisent 2015-03-03 20:49:21

+0

它的工作..謝謝..你能請更新答案,以便我可以接受它是正確的... – 2015-03-04 06:21:05

0

一個sed -i調用編輯-IN-地方會做你想做的事:

sed -i 's/android {/android {\n**HERE THE TEXT ADDED IN THE COMMAND SHOULD APPEAR**/' 

您可以使用sed調用的其他幾種變體來調整您的精確需求。

相關問題