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
このタイプの作業に適したツールです。質問のように、すべてのデータが1つのファイルにあるとし、次のことを試してください。
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'