Em relação ao comando awk

1

Alguém pode me dizer como posso adicionar uma palavra em particular no arquivo inteiro usando o comando awk .

os dados são assim:

Organism: ahy   
matching miRNAs 
    miR156a
    miR156b
    miR156c
    miR159
    miR167
    miR3512
    miR3519
    miR394

Organism: aly   
matching miRNAs 
    miR156a
    miR156b
    miR156c
    miR156d
    miR156e
    miR156f
    miR156g
    miR156h
    miR157a
    miR157b
    miR157c
    miR157d
    miR159a
    miR159b
    miR159c
    miR160a
    miR160b
    miR160c
    miR161

Agora quero que a saída seja assim:

Organism: ahy   
matching miRNAs 
ahy miR156a
ahy miR156b
ahy miR156c
ahy miR159
ahy miR167
ahy miR3512
ahy miR3519
ahy miR394

Organism: aly   
matching miRNAs 
aly miR156a
aly miR156b
aly miR156c
aly miR156d
aly miR156e
aly miR156f
aly miR156g
aly miR156h
aly miR157a
aly miR157b
aly miR157c
aly miR157d
aly miR159a
aly miR159b
aly miR159c
aly miR160a
aly miR160b
aly miR160c
aly miR161
aly miR162a
aly miR162b
aly miR163

Por favor, sugira-me como posso fazer isso usando um comando awk . Eu sou iniciante e estou tentando, mas não encontrei como posso adicionar uma palavra em particular em todo o arquivo.

    
por dl123 17.04.2015 / 17:17

3 respostas

2

Sim, awk é a ferramenta certa para essas tarefas. Supondo que todos os dados estão em um arquivo, como mostrado na pergunta, tente:

awk '
  /^Organism:/  { prefix = $2 ; print ; next }
  /^matching/ || !NF  { print ; next }
  { print prefix, $1 }
'
    
por 17.04.2015 / 17:35
0

Acho melhor com sed , como: sed 's/\ / ahy /g' e sed 's/\ / aly /g' . Ele substituirá qualquer caractere de espaço para ahy ou aly .

Também é possível com awk , mas não consegui entender como seus dados estão armazenados: - /

EDITAR:

Tente isso awk '{if ($1=="Organism:") {word = $2; print $0} else { if ($1=="matching") {print $0} else {print word $0}} }' filename

    
por 17.04.2015 / 17:24
0

Conforme solicitado, executado por awk

awk '/^Organism/{prefix=$2}/miR[0-9]{3}/{$0=prefix $0}1'
    
por 17.04.2015 / 17:59

Tags