줄 끝의 텍스트를 복사하여 붙여넣기

줄 끝의 텍스트를 복사하여 붙여넣기

길고 짧지만, 선택한 줄의 끝을 복사하여 해당 줄에 텍스트를 추가하는 방법이 있습니까? 내가 이루고 싶은 것은 이것이다.

내가 소유한 것

>13_gnd
atcg
>14_galF
atgc

내가 원하는 건

>13_gnd_gnd
atcg
>14_galF_galF
atgc    

따라서 마지막 단어로 시작하는 모든 줄을 복사하여 >줄 끝에 추가하세요. 감사해요.

답변1

$ sed 's/_[^_]*$/&&/' file         
>13_gnd_gnd
atcg
>14_galF_galF
atgc

교체는 sed각 줄의 마지막 밑줄과 그 뒤의 모든 항목(줄 끝까지)과 일치합니다. 이것이 패턴이 _[^_]*$수행하는 작업입니다("밑줄이 아닌 다른 문자가 뒤에 올 수 있는 밑줄 및 줄 끝과 일치"). 그럴 것이다바꾸다이것은(밑줄 포함) 무엇이든 두 번 일치합니다( &&대체 비트에 있는 내용입니다).

파일인 것 같으니까fasta 형식, 게놈 서열에는 밑줄을 포함할 수 없으므로 >줄 시작 부분에 특별한 테스트가 필요하지 않습니다.

답변2

짧은해결책:

awk -F'_' '$0~/^>/{ $0=$0 FS $NF }1' file

산출:

>13_gnd_gnd
atcg
>14_galF_galF
atgc

세부 사항:

  • -F'_'- 필드 구분 기호

  • $0~/^>/- 줄이 다음으로 시작하는 경우>

  • $0=$0 FS $NF- 마지막 필드 값을 끝에 추가합니다.

관련 정보