>GDRLR5L04EQY8D 3931|1166 스트림을 >3931로 편집

>GDRLR5L04EQY8D 3931|1166 스트림을 >3931로 편집

다음 형식의 큰 텍스트 DNA 서열 파일이 있습니다.

>name 
AACTGGGCT

>로 시작하지 않는 줄은 변경하지 않고 그대로 두고 추가 정보와 특수 문자를 사용하여 현재 이름 줄을 구문 분석해야 합니다.

다음이 있습니다("D 3" 사이에 공백이 아니라 탭 문자임).

>GDRLR5L04EQY8D 3931|1166
GACAAACGCTGGCGGGTGCATGAG

생각하다:

>3931
GACAAACGCTGGCGGGTGCATGAG

첫 번째 부분을 제거 하려고 시도했지만 sed 's/\>*[[:blank:]]/>/g'작동하지 않습니다. gawk마지막에 파이프와 숫자를 제거 할 수 있나요 ?

답변1

사용 awk:

awk -F'[| ]' '{if ( $1 ~ /^>/ ) print ">"$2; else print $0}' file
>3931
GACAAACGCTGGCGGGTGCATGAG

파이프 앞의 첫 번째 문자열 끝과 숫자 집합의 시작 사이의 공백이 a Tab대신 a 인 경우 Space필드 구분 기호를 설정하는 정규 표현식은 입니다 [|\t].

답변2

sed 솔루션:

sed '/^>/s/>.* \([0-9]*\)|.*/>\1/' < existing-file > new-file

이로 인해 그 뒤의 명령이 >로 시작하는 입력 행에서만 작동하게 되는데, 이는 수행할 수 있는지 /^>/모르는 것 같습니다 .sed

답변3

다른 sed:

$ sed -e 's/[^>].* \([0-9]*\)|.*/\1/' file
>3931
GACAAACGCTGGCGGGTGCATGAG

답변4

sed 's/>.* />/;s/|.*//
' <<\DATA
>GDRLR5L04EQY8D 3931|1166
GACAAACGCTGGCGGGTGCATGAG
DATA

산출

>3931
GACAAACGCTGGCGGGTGCATGAG

관련 정보