複数行を選択的にマージしますか?

複数行を選択的にマージしますか?

ヘッダー行の後に文字列が複数回出てくる大きなファイルがあります。たとえば、

file1

VHBFBJBDSBVVFJBSV
SVJBVHJBVJ
SVKJBVJBNVKVJV

file2

dfhgdgffdghgg
SVKJBVJBNVKVJV

ヘッダーは同じままですが、2行以降のすべての文字を1行にマージしたいと思います。誰でも何かを提案できますか?

答え1

このソリューションは、tailヘッダー行を削除し、結果を.tmpファイルに保存してからpaste行をマージすることを目的としています。生成されたファイルはab.pastedです。

tail +2 a > a.tmp
tail +2 b > b.tmp
paste a.tmp b.tmp > ab.pasted
rm a.tmp b.tmp

答え2

あなたの質問を正しく理解したら、次のようにします。

{ head -n 1; paste - file2; } < file1 > newfile

次のようなものを作成しますnewfile

VHBFBJBDSBVVFJBSV
SVJBVHJBVJ      dfhgdgffdghgg
SVKJBVJBNVKVJV  SVKJBVJBNVKVJV

上記の行はタブで貼り付けられています。 SPC文字が必要な場合はオプションを追加し-d ' 'paste区切り文字を望まない場合は-d '\0'

関連情報