谁能告诉我如何使用awk
命令在整个文件中添加特定单词。
数据看起来像这样:
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
现在我希望输出看起来像这样:
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
请向我建议如何使用awk
命令来执行此操作。我是初学者,我正在尝试,但没有找到如何在整个文件中添加特定单词。
答案1
是的,awk
是完成此类任务的正确工具。假设所有数据都在一个文件中,如问题所示,请尝试:
awk '
/^Organism:/ { prefix = $2 ; print ; next }
/^matching/ || !NF { print ; next }
{ print prefix, $1 }
'
答案2
我认为用sed
, 比如:sed 's/\ / ahy /g'
和更好sed 's/\ / aly /g'
。它将替换ahy
或 的任何空格字符aly
。
也可以awk
,但我无法理解你的数据是如何存储的:-/
编辑:
尝试这个
awk '{if ($1=="Organism:") {word = $2; print $0} else { if ($1=="matching") {print $0} else {print word $0}} }' filename
答案3
按照要求执行awk
awk '/^Organism/{prefix=$2}/miR[0-9]{3}/{$0=prefix $0}1'