두 번째 밑줄 이후의 모든 항목을 제거합니다.

두 번째 밑줄 이후의 모든 항목을 제거합니다.

두 번째 밑줄(밑줄 자체 포함) 뒤의 모든 텍스트를 제거하고 싶지만 모든 줄을 제거하고 싶지는 않습니다. 각 대상 행은 패턴(>gi_)으로 시작됩니다.

예.

입력하다

>gi_12_pork_cat

ACGT

>gi_34_pink_blue

CGTA

산출

>gi_12

ACGT

>gi_34

CGTA

답변1

우리 중 게으른 사람들을 위해:

cut -d_ -f1,2 input

우리에게 줘:

bash-[514]$ cat input
>gi_12_pork_cat   
ACGT
>gi_34_pink_blue    
CGTA

bash-[515]$ cut -d_ -f1,2 input
>gi_12
ACGT    
>gi_34
CGTA

답변2

다음과 같은 속기도 사용됩니다 awk.

awk -F_ '{print $1 (NF>1? FS $2 : "")}' yourfile

답변3

$ awk -F_ 'BEGIN {OFS="_"} /^>gi/ {print $1,$2} ! /^>gi/ {print}' input
>gi_12
ACGT
>gi_34
CGTA

답변4

sed -ne '/^>gi_/s/_/\n/2;P' yourfile

설명하다

  • 문자열로 시작하는 줄에 대해서만 >gi_sub 에 영향을 주려고 합니다 _ ---> \n. 그런 다음 P개행 문자 하나 또는 전체가 발견되면 첫 번째 개행 문자까지 인쇄하는 명령을 사용하여 패턴 공간을 인쇄합니다 .

관련 정보