파일에 문자열이 포함된 경우 새 줄 삽입

파일에 문자열이 포함된 경우 새 줄 삽입

가져온 후 줄에 '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로 작업하는 방법을 찾지 못했습니다. 맥 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' 

단점:

  • gsed -i '0,/import/a import RxSwit'`를 설정하면 gsed -i '/import/a import RxSwift' its called for each import enter line. I want only first. Something like:작동하지 않습니다...

아직도 조사 중....

답변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세인 나에게 도움이 되기를 바랍니다.

관련 정보