내 -script 중 일부에서는 스크립트 자체 가 -script로 실행될 때만 콘텐츠가 실행되도록 python
이 줄을 배치했습니다 (가져오지 않음, 참조).if __name__ == '__main__'
main
이 설명).
최근에 발견한 것처럼 sed
.
내가 추가하고 싶은 줄은 다음과 같습니다.
# Docs on scope of __name__ == "__main__": https://stackoverflow.com/a/419185/12298276
# -> Makes boolean "execute_in_script = True/False" obsolete
이를 달성하기 위해 모든 스크립트에서 필요한 변경 사항을 자동으로 적용하는 다음 find
--command를 설정했습니다 .sed
python
find /home/andylu/Desktop/Python/Scripts/ -not -path "*.history*" -not -path '*__pycache__*' -type f -exec sed -i -Ee '/^if __name__ == '__main__':.*/i # Docs on scope of __name__ == "__main__": https://stackoverflow.com/a/419185/12298276\n# -> Makes boolean "execute_in_script = True/False" obsolete' {} \;
불행히도 작동하지 않습니다. 완료까지 약 30초 정도 소요되어 실행중인 것으로 보이지만 콘솔에는 아무런 출력도 없고 스크립트에도 아무런 변화가 없습니다 python
.
sed
-string(예 /line of interest/i Lines to\nprepend before that line
: )이 작동하려면 어떻게 수정해야 합니까 ?
앞이나 뒤에 줄을 추가하는 방법에 대한 문서sed:
바라보다이 블로그 게시물.
답변1
@steeldriver의 의견 덕분에 다음 명령을 사용하여 이를 수행할 수 있었습니다.
andylu@andylu-Lubuntu-PC:~/$ find /home/andylu/Desktop/Python/Scripts/ -not -path "*.history*" -not -path '*__pycache__*' -type f -exec sed -i -Ee '/^if __name__ == '\''__main__'\''/i # Docs on scope of __name__ == "__main__": https://stackoverflow.com/a/419185/12298276\n# -> Makes boolean "execute_in_script = True/False" obsolete' {} \;
'
작은따옴표로 묶인 정규식 문자열의 작은따옴표는 다음과 '\''
같이 바꿔야 합니다 .
작은따옴표는 중첩될 수 없습니다.