ファイルに文字列が含まれている場合は新しい行を挿入します

ファイルに文字列が含まれている場合は新しい行を挿入します

インポート後の行に「import packagename」を挿入する必要があります。特定の単語を含むファイル内。私が試していること:

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、bsd sed で make を動作させる方法がわかりませんでした。mac os。

UPD: 結果は僅差

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

短所:

  • if set 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歳の私にとって役立つことを願っています。

関連情報