あるファイルから入力を受け取り、特定の列の別のファイルに追加する

あるファイルから入力を受け取り、特定の列の別のファイルに追加する

2つのファイルがあります

159
149

そして

2e49.pem,Apr 29 07:07:13 2017 GMT,275
2f69.pem,Apr 29 07:18:21 2017 GMT,275

2752番目のファイルの最後の単語を最初のファイルの対応する行に置き換えたいと思います。

次のようにする必要があります。

2e49.pem,Apr 29 07:07:13 2017 GMT,159
2f69.pem,Apr 29 07:18:21 2017 GMT,149

答え1

sed 's/[^,]*$//' file2 | paste -d '\0' - file1

または以下を使用してawk

awk -F , -v OFS=, '{getline $NF < "file1"; print}' file2

答え2

2番目のファイルから最後のコンマの後のビットを削除するには(カンマを含む):

$ sed 's/,[0-9]*$//' second.txt
2e49.pem,Apr 29 07:07:13 2017 GMT
2f69.pem,Apr 29 07:18:21 2017 GMT

この出力の各行の末尾に、最初のファイルをカンマで区切って貼り付けます。

$ paste -d ',' <( sed 's/,[0-9]*$//' second.txt ) first.txt
2e49.pem,Apr 29 07:07:13 2017 GMT,159
2f69.pem,Apr 29 07:18:21 2017 GMT,149

これは、シェルが<( ... )bashおよび)を使用したksh93プロセス置換を理解していると仮定します。

注:これはStéphaneの解決策と非常によく似ていますが、区切り文字をsed避けるためにカンマも削除してプロセス置換を使用しています。\0paste

関連情報