両方のファイルの他のすべての行をマージします。

両方のファイルの他のすべての行をマージします。

ファイル1:

A
B
C 
D

ファイル2:

E
F
G
H

出力をどのように取得しますか?

A
BF
C
DH

ベストアンサー1

次のことができます。

paste -d '\n' file1 file2 | sed -n 'p;n;n;N;s/\n//p' > output

paste2 つのファイルを 1 行ずつ交互に圧縮し、1sed pつ目を印刷し、2 つ目を削除し、4 つ目を 3 つ目に追加して接続し、次の行から再開します。

またはGNUを使用してくださいsed

paste -d '\n' file1 file2 | sed '2~4d' | paste -sd '\n\0\n' - > output

ここでは、圧縮された出力から4行の2行目のみを抽出し、接続のためにsed2d番目pasteに貼り付けます。

それともGNUを使い続けるsed

sed 'z;n' file2 | paste -d'\0' file1 - > output

これはsed1行を圧縮し(他の実装sedでは使用可能です)、extをs/.*//取得して印刷してfile1に貼り付けることができます。n

おすすめ記事