ヘッダーとしてディレクトリ内のファイルを結合し、共有コンテンツを省略します。

ヘッダーとしてディレクトリ内のファイルを結合し、共有コンテンツを省略します。

だから私はここで私がしたいのと反対の質問を見つけました。同じヘッダーで複数のファイルを関連付ける

ヘッダーの ">"文字に基づいて、2つのファイル(同じ部分文字列を持つそのファイルのディレクトリ内の何百ものファイルのうち)を1つのファイルにマージまたはリンクしようとしています。各ファイルには何千ものヘッダがありますが、私が添付したリンクで尋ねる質問とは異なり、ヘッダ以外の内容は同じなので、「>」で始まるすべての行以外は何も変更したくありません。

デフォルトでは、">"文字を共有してfile1とfile2を結合し、file1の内容を順番に保持したいと思います。

File1
> MGBNCNOSNC_142
9u2o4840204a9
> MGBNCNOSNC_143
AOISCJNWDCSNDCCW
> MGBNCNOSNC_144
AOISCJ40204DZZW

File2
>King_Henry
>Queen_jerry
>Jack_jill

Output
> MGBNCNOSCNC_142 > King_henry
9u2o4840204a9
> MGBNCNOSCNC_143 > Queen_jerry
AOISCJNWDC
> MGBNCNOSNC_144 > Jack_jill
gefSCJ40204DZZW

助けてくれてありがとう。より明確に説明できたら教えてください!

ベストアンサー1

File2インデックス付きawk配列で行を読み取ってから順番に追加できます。File

awk '
  NR==FNR {a[i++]=$0; next} 
  /^>/ {$0 = $0" "a[j++];}
  {print}
  ' File2 File1

または、GNU sed(拡張機能を含む)がある場合はR試してください。

sed '/^>/ R File2' File1 | sed '/^>/ {N;s/\n/ /}'

各行File1が追加の行と一致する必要がある場合は、他のオプションはスペースを2倍にしてファイルを合計File2するpasteことです。

sed 'G' File2 | paste -d ' ' File1 -

一致しない行に余分なスペースがある場合でも、これが望ましくない場合は、区切り文字なしで各行File2の先頭にスペースを挿入できます。paste

sed 's/^/ /; G' File2 | paste -d '' File1 -

おすすめ記事