복잡한 행 앞이나 뒤에 복잡한 행 삽입

복잡한 행 앞이나 뒤에 복잡한 행 삽입

복잡한 텍스트가 포함된 파일이 있습니다.

    print("ERROR: passwords don't match")

password = hash_func(password.encode("UTF-8")).hexdigest()

사이에 이 텍스트를 삽입해야 합니다.

with open('/etc/openvpn/clients/%s/login.txt' % username, 'w') as login_log:
    login_log.write('%s\n%s\n' % (username, password))

그럼 이렇게 되겠죠

 else:
        print("ERROR: passwords don't match")


with open('/etc/openvpn/clients/%s/login.txt' % username, 'w') as login_log:
    login_log.write('%s\n%s\n' % (username, password))

password = hash_func(password.encode("UTF-8")).hexdigest()

답변1

cat > user.inp << EOL

with open('/etc/openvpn/clients/%s/login.txt' % username, 'w') as login_log:
    login_log.write('%s\n%s\n' % (username, password))
EOL
sed -i '/ERROR: passwords/r user.inp' /root/add.py
fi

답변2

당신은 이것을 할 수 있습니다 vi:

vi -c '/print("ERROR: passwords don'\''t match")/a\

with open('\''/etc/openvpn/clients/%s/login.txt'\'' % username, '\''w'\'') as login_log:
    login_log.write('\''%s\n%s\n'\'' % (username, password))
.' myfile

(이것은 모두 명령입니다.)

이렇게 하면 파일을 열고 vi수정할 수 있지만 파일은 저장되지 않습니다. 원하는 대로 되었는지 확인할 수 있습니다.

종료하고 변경 사항을 저장하려면 을 입력 :x하고 Enter를 누르십시오. 종료하고 변경 사항을 취소하려면 를 입력 :q!하고 Enter를 누르십시오.

문제가 발생하면 <Esc>한두 번 누른 후 다시 시도하세요 :q!.


스크립트 편집기에 대한 참조는 매우 빠르게 매우 나빠질 수 있습니다. 파일을 대화식으로 편집하기 위해 파일을 사용하고 여는 방법을 배우는 vi것이 위의 명령에서 참조를 알아내는 것보다 훨씬 쉽습니다.


훨씬 쉽습니다. 한 파일에 이미 줄이 있고 다른 파일의 특정 위치에 삽입하려는 경우 몇 가지를 조정할 수 있습니다.ex내가 작성한 코드그냥 해.

관련 정보