ファイル1

ファイル1

列にデータを含む2つのファイルFile-1とFile-2があります。次のように別のファイルを作成し、そのデータに対応するFile-2の最初の列のデータを行単位でfile-1にコピーしたいと思います。

ファイル1



A  P
B  Q
C  R


ファイル2



5.4  9.0
7.4  11.5
9.4  15.7

出力

A=5.4, B=7.4, C=9.4

データの最初の列に対してのみ、出力が上記の行形式であることを望みます。
助けてくれてありがとう! !
よろしくお願いします! ! !

ベストアンサー1

「結合」(質問のタイトルで参照)は、あるデータセットを使用して別のデータセットからデータを抽出する特定のタスク(リレーショナル結合タスク)です。これはjoinユーティリティ(または短いコマンド)を使用して実行できますawk

あなたが望むのはデータ抽出とマージです。質問テキストでこれを非常によく説明します。

シェルがあると仮定すると、以下を使用して各ファイルbashの最初の列の内容を抽出できます。cut=paste

$ paste -d '=' <(cut -d ' ' -f 1 File-1) <(cut -d ' ' -f 1 File-2)
A=5.4
B=7.4
C=9.4

それぞれ(プロセス置換)は、置換内のコマンド出力を読み取ることができる一時<(...)ファイルの名前で置き換えられます。cutpaste

その後、次のように1つのカンマ区切りの行に結合できます。

$ paste -d '=' <(cut -d ' ' -f 1 File-1) <(cut -d ' ' -f 1 File-2) | paste -d ',' -s -
A=5.4,B=7.4,C=9.4

各コンマの後にスペースが必要な場合は、次のものをsed使用できます。

$ paste -d '=' <(cut -d ' ' -f 1 File-1) <(cut -d ' ' -f 1 File-2) | paste -d ',' -s - | sed 's/,/, /g'
A=5.4, B=7.4, C=9.4

質問の空行は実際にはデータファイルの一部ではないと仮定します。sed '/^[[:blank:]]*$/d'空白行または空白および/またはタブのみを含む行を削除する前処理されたデータを使用できます。

cutpasteand(man cutand)のマニュアルも参照してくださいman paste

おすすめ記事