Eu tenho um arquivo de texto chamado xid.txt
:
xid: SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: SC32173 id: artf398402
xid: SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
Preciso adicionar uma string 'PT_' antes de 'SC48028', 'SC32173' ... etc. A cadeia 'SC ...' pode começar com qualquer combinação, pode ser 'AC ...' ou 'DL ..'
Saída necessária:
xid: PT_SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: PT_SC32173 id: artf398402
xid: PT_SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
Se você vir a saída acima, não devemos inserir 'PT_' antes das strings que começam com 'i', 'p', 'w' e 'numérico'. Eu tentei alguns comandos básicos para o meu requisito usando insert / append no sed.
text-processing
awk
sed
Subrat Sahoo
fonte
fonte
Respostas:
Com awk :
A saída:
$2~/^[A-Z][A-Z]/
- se o segundo campo começar com 2 letras maiúsculasOu abordagem sed :
fonte
awk '$2~/^[A-Z]{2}/{ $2="PT_"$2 }1' xid.txt > xid-tmp && mv xid-tmp xid.txt
ou use minha segunda abordagemawk
(a que você normalmente instala nos sistemas Linux) possuem, o-i inplace
que permite editar um arquivo no local, como sed e perl-i
.-i inplace
(sugeri uma abordagem unificada commv
comando para o OP caber na portabilidade). Quanto àBioinformatics beta
comunidade: eu acabei de participar. Poderia haver tarefas relacionadas à programação / processamento do Linux / Python? Como você pensa?opção sed
Onde
-i
editar no local-e
comando para executarfonte