터미널에서 명령을 실행 하면 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" 변수가 필요합니다.