두 행을 두 열로 변환

두 행을 두 열로 변환

를 사용하여 두 행을 두 열로 변환하고 싶습니다 awk.

입력.txt:

# Query: gi|11465907|ref|NC_001872.1| Chlamydomonas eugametos genome, complete genome
# 0 hits found
# Query: gi|11465922|ref|NC_000892.1| Pedinomonas minor genome, complete genome
# 1 hits found

출력.txt:

Chlamydomonas eugametos genome 0
Pedinomonas minor genome 1

답변1

입력 파일이 일관적이라고 가정합니다.

awk -F'[|,]' '/genome/ {printf "%s ", $5; next} {print substr($1,3,1)}' input.txt > output.txt
Chlamydomonas eugametos genome 0
Pedinomonas minor genome 1

답변2

노력하다:

awk -F'[|] |,' '{getline p; split(p,H," "); print $2,H[2]}' file

|이는 구분된 필드에 추가 쉼표가 필요하지 않습니다.

이러한 의미에서 다음이 더 강력합니다.

awk -F'[|] *' '{getline p; split($5,Q,","); split(p,H," "); print Q[1],H[2]}' file

sed의 대안:

sed 'N; s/.*| *//; s/,.*\n#//; s/ hits found//' file

관련 정보