다음 헤더를 회전해야 합니다.
'>>tr|G1PEZ0|G1PEZ0_MYOLU Uncharacterized protein (Fragment) OS=Myotis lucifugus GN=SNCG PE=4 SV=1
그게 다야:
'>G1PEZ0_MYOLU
앞에 나오는 아포스트로피는 무시하세요.
답변1
이건 어때:
str='>>tr|G1PEZ0|G1PEZ0_MYOLU Uncharacterized protein (Fragment) OS=Myotis lucifugus GN=SNCG PE=4 SV=1'
echo "$str" | sed -e 's/ .*//' -e 's/.*|//' -e 's/^/>/'
3개의 별도 대체를 사용합니다. 즉, 줄의 첫 번째 공백부터 시작하여 모든 것을 제거하고, |
줄의 마지막 공백까지 모든 것을 제거한 다음, >
줄의 첫 번째 문자로 다시 추가합니다.
답변2
이는 다음을 사용하여 수행할 수도 있습니다 cut
.
input=">>tr|G1PEZ0|G1PEZ0_MYOLU Uncharacterized protein (Fragment) OS=Myotis lucifugus GN=SNCG PE=4 SV=1"
echo "$input" | cut -d" " -f1 | cut -d"|" -f3 | sed "s/^/>/"
답변3
그리고 :tr
cut
tr ' |' '>>' <input |cut -d\> -f1,6
... tr
모든 공간과 |
파이프를 직각으로 변환한 다음 >
결과 유한 도메인에서 cut
첫 번째와 여섯 번째 도메인만 가져옵니다 .> -d
-f
sed를 사용하세요...
sed -n 'y/ /\n/;s/.*|/>/;P' <input
또한 y///
모든 공백을 \n
줄줄이로 변환한 다음 s///
파이프로 끝나는 가장 왼쪽 및 가장 긴 문자열을 |
단일 문자열로 바꾼 >
다음 패턴 공간의 첫 번째 줄줄 P
만 인쇄합니다 .\n