を使用して2行を2列に変換したいと思います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