이것은 표준 fasta 형식 파일이 아닌 내 file1.fa(seqID, \t, 시퀀스)입니다.
abc MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
cef AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
rig AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK
이제 다음과 같이 표준 fasta 형식으로 변환하고 싶습니다.
>abc
MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
>cef
AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
>rig
AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK
이와 같은 것을 시도했지만 ">"를 추가하는 방법을 모르겠습니다. 누구든지 도와줄 수 있습니까?
less -S file1.fa | sed 's/\t/\n/g' > file2.fa
답변1
sed
대신에 간단히 사용할 수도 있습니다 less
. 파일을 편집할 수도 있습니다.제자리에출력을 새 파일로 리디렉션하지 않고.
귀하의 sed
명령은 다음과 같습니다
sed -i'.bak' 's/\(.*\)\t/>\1\n/g' file1.fa
또는 편집하고 싶지 않은 경우제자리에당신은 그것을 사용할 수 있습니다 :
sed 's/\(.*\)\t/>\1\n/g' file1.fa > file2.fa
답변2
사용행복하다(이전 Perl_6)
raku -pe 's/^ (<:Ll>+) (\s) />$0\n/;'
#OR
raku -pe 's/^ <((<:Ll>+) (\s))> <:Lu>+ />$0\n/;'
이 답변은 Raku의 :Ll
(유니코드 소문자) 및 :Lu
(유니코드 대문자) 문자 클래스 정의를 사용합니다.
https://docs.raku.org/언어/regexes#Unicode_properties
원하는 경우 \S+
공백이 아닌 문자 하나 이상을 나타내기 위해 간단히 바꿀 수 있습니다. \s
보다 구체적인 토큰으로 변경할 수도 있습니다 \t
.
두 번째 예에서 Raku의 <(
... )>
캡처 플래그는 Raku에게 일치하는 객체를 제외한 모든 항목을 삭제하도록 지시하므로 <:Lu>+
대체 항목에 일치 항목(삭제 아님)이 있습니다.
입력 예:
abc MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
cef AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
rig AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK
예제 출력:
>abc
MFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNISGPGGTGKTFLMSHLIDDTMPA
>cef
AFSKPTKAPLNKGQEAVAKEFFDFLLDPNATEFNESGPGGTGKTFLMSHLIDDTMFA
>rig
AAAAAAAAAAAAAAAAAAAAAAAAAAGGEGKFKKKKKSKKKKKKKKKKKKKKKKKKK
https://docs.raku.org/언어/regexes
https://conf.raku.org/talk/156
https://raku.org