貼り付け:最小のrow-ctファイルの行数のみを含む1行あたりの行をマージします。

貼り付け:最小のrow-ctファイルの行数のみを含む1行あたりの行をマージします。

2つのファイルがあるとしましょう。

// foo
a
b
c
d

// bar
x,y,z
p,d,q

問題は次のとおりです。

paste -d ',' foo bar

... 

a,x,y,z
b,p,d,q
c
d

代わりに、私は(とにかく)以下を生成したいと思います:

a,x,y,z
b,p,d,q

しかし、現在私が見ることができる唯一の方法は、最小ファイルの行数を確認し、切り捨てられたファイルに貼り付けを実行する小さなプログラムを書くことです。

最悪の場合は、迅速なスクリプトと敏捷性のためにコマンドラインを「シンプル」に保つためにコンパイルされたホームブレンドツールを作成する必要があります。

既存のツールを使用してこれを行う方法があるはずですが、方法がわかりません。この保守的な貼り付け操作を実行する方法はありますか?

これまでの最良の解決策は次のとおりです。

paste -d ',' foo bar | awk -F ',' '{if(NF > 2){print $0}}'

答え1

努力する

$ awk -F, 'FNR == NR {T[NR] = $0; next} {$0 = T[FNR] OFS $0} NF == 4' OFS=, file[12]
a,x,y,z
b,p,d,q

関連情報