Supondo que os dados de exemplo da sua pergunta estão armazenados em file.txt
, você pode usar sed
para processar o texto e remover tudo após (e incluindo) o primeiro caractere de espaço em branco em cada linha começando com >
:
$ sed -r 's/^(>\S+)\s.*//' file.txt
>AB3446
GATAGATAGATAGACACA
>AH4567
ACGTGATAGATGAGACGATGCCC
CACGGGTATATAGCCCAA
Se o comando sed -r 's/^(>\S+)\s.*//' file.txt
produzir a saída correta para você, você poderá instruí-lo a modificar o arquivo fornecido in-loco, em vez de apenas mostrar a saída, adicionando a opção -i
a este comando sed
:
sed -r -i 's/^(>\S+)\s.*//' file.txt
O que isto faz é simples. -r
ativa expressões regulares estendidas, fornecendo mais funcionalidades para definir padrões de regex em nosso comando, que é s/PATTERN/REPLACEMENT/
aqui.
PATTERN
é a expressão regular ^(>\S+)\s.*
que corresponde a um caractere >
no início de uma linha ( ^
) seguido por pelo menos um caractere que não seja espaço em branco ( \S+
), um caractere de espaço em branco \s
, pode ser um espaço em branco normal, tabulação, etc.) e depois todo o resto da linha ( .*
é qualquer número de qualquer caractere).
REPLACEMENT
é
, que indica sed
para usar o conteúdo do primeiro grupo de captura (o que corresponde ao padrão dentro do par mais à esquerda de parênteses redondos (...)
) da linha correspondida como substituição. No nosso caso, isso é tudo até o primeiro espaço em branco, exclusivamente.