2つのファイルがあります
159
149
そして
2e49.pem,Apr 29 07:07:13 2017 GMT,275
2f69.pem,Apr 29 07:18:21 2017 GMT,275
275
2番目のファイルの最後の単語を最初のファイルの対応する行に置き換えたいと思います。
次のようにする必要があります。
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
避けるためにカンマも削除してプロセス置換を使用しています。\0
paste