从一个文件获取输入并添加到特定列中的其他文件

从一个文件获取输入并添加到特定列中的其他文件

我们有两个文件

159
149

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

我想275用第一个文件中的相应行替换第二个文件中的最后一个单词 。

它应该看起来像这样:

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

要删除第二个文件中最后一个逗号后面的位(包括逗号):

$ 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

这是假设您的 shell 理解用<( ... )(bashksh93) 进行进程替换。

注意:这与 Stéphane 的解决方案非常相似sed,但我还删除了逗号以避免\0分隔符为paste,并且我正在使用进程替换。

相关内容