sed를 사용하여 Python 스크립트의 특정 줄 앞에 주석과 URL이 포함된 두 줄을 추가하세요.

sed를 사용하여 Python 스크립트의 특정 줄 앞에 주석과 URL이 포함된 두 줄을 추가하세요.

내 -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를 설정했습니다 .sedpython

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' {} \;

'작은따옴표로 묶인 정규식 문자열의 작은따옴표는 다음과 '\''같이 바꿔야 합니다 .

작은따옴표는 중첩될 수 없습니다.

관련 정보