我需要在導入後將“導入包名稱”插入行中。在包含特定單字的檔案中。我嘗試的:
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}'
第一次出現如何sed
:https://stackoverflow.com/a/9970915/887325
find
- 尋找所有包含Reachability
文字的文件;cut
- 唯一路徑xargs
- 路徑檔案作為參數gsed
gsed
- 尋找第一個import
包含 {i\ 的行 - 插入新行:import RxReachability
希望這個答案對90歲的我有用。