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")

PS:Python変数「single_line」が何であるかはわかりませんが、代わりに「command」変数が必要です。

おすすめ記事