如果檔案包含字串則插入新行

如果檔案包含字串則插入新行

我需要在導入後將“導入包名稱”插入行中。在包含特定單字的檔案中。我嘗試的:

find iOS/Chat \
  -type f \
  -name "*.swift" \
  -exec gsed -e "/Behavior/ " -e "20a import RxSwift" -i {} +;

也嘗試過:-exec gsed -e "/Behavior/20a import RxSwift" -i {} +; 看起來這個結構不起作用。

gsed - gnused,我沒有找到如何讓 make 與 bsd sed 一起工作。蘋果系統。

UPD:結果接近

find iOS/Chat -type f -name "*.swift*" -exec grep -iHn "Behavior" {} \; | cut -d: -f-1 | xargs gsed -i '/import Foundation/a import RxSwift' 

缺點:

  • 如果設定gsed -i '/import/a import RxSwift' its called for each import enter line. I want only first. Something like:gsed -i '0,/import/a import RxSwit'` 對我不起作用...

仍在調查中....

答案1

好的,我找到了解決方案。

  • brew install gsed- 需要
find ./ \                                                                                                                                                          
 -type f \
 -name "*.swift*" \
 -exec grep -lHn "Reachability" {} \; | cut -d: -f-1 | xargs gsed -i -e '/import/{i\import RxReachability' -e ':a;n;ba}'

第一次出現如何sedhttps://stackoverflow.com/a/9970915/887325

  • find- 尋找所有包含Reachability文字的文件;
  • cut- 唯一路徑
  • xargs- 路徑檔案作為參數gsed
  • gsed- 尋找第一個import包含 {i\ 的行 - 插入新行:import RxReachability

希望這個答案對90歲的我有用。

相關內容