Linux 및 Python sed 명령 경고

Linux 및 Python sed 명령 경고

터미널에서 명령을 실행 하면 sed제대로 작동하지만 Python에서 사용하면 오류가 발생합니다.

sed주문하다:

sed ':a; $!N; /^>/!s/\n\([^>]\)/\1/; ta; P; D' test.fasta

SJL19094 
MQVHPTLVLNPKLTIFLSFDGALGGLYDFITPNASALWAPPLGSNRVMYLRSDLRYGDDDPLSWPQSYVPQYCHFPIIRSVLLNPSDSHPDARYTGFRAKLTSTKLILPANAGVQDSYSIISFAWFQKRVDKTVEHGKGTTFFEGAEDLKHSYTVLLHDLLERLQHLPMS
SJL19095 
MGIQAHLGHPQATGEPSGEVWGP
SJL19096 
MLPKEIDEFKNEIDSRGGYMYTLATSINDFTENTHETVCQFLKAAPLIPDLEYKFDPNKREDYPEKQWTSSGLVQDERLSHVRTWLRNVRYHPEGLNNKQYLTFKQYCRNFFLDKEG
SJL19097
MGNGIATSYFQELEMEAKLARRHYDKRERGMMMKAVQLGIPKSYSKFIAMMGFNMPHTYQEWKARVTATYEERQKKWVFDQTTSTPYDSCPLNKGHSNTALATKQMARPPMTAIYKTSNSVS

그러나 Python에서 동일한 코드를 사용하면 다음과 같은 경고가 표시됩니다.

Python 명령

import subprocess
command=(f"sed ':a; $!N; /^>/!s/\n\([^>]\)/\1/; ta; P; D' test.fasta")
subprocess.call(single_line,shell=True)
sed: -e expression #1, char 16: unterminated `s' command

동일한 내용에 대한 설명을 주시면 대단히 감사하겠습니다. 미리 감사드립니다!

답변1

원래 문자열도 포함하도록 f-문자열을 변경하여 이스케이프 시퀀스가 \n​​문자 그대로 사용되고 확장되지 않도록 sed nitpick이 발생하는 곳입니다. 기본적으로 \n은 확장되고 sed는 s/// 명령의 lhs에서 막다른 골목을 봅니다.

나는 다음이 당신을 시작하고 실행하게 해야 한다고 믿습니다.

command=(fr"sed ':a; $!N; /^>/!s/\n\([^>]\)/\1/; ta; P; D' test.fasta")

추신: Python 변수 "single_line"이 무엇인지 확실하지 않지만 대신 "command" 변수가 필요합니다.

관련 정보