awk 명령 정보

awk 명령 정보

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'

관련 정보