我们有两个文件
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 理解用<( ... )
(bash
和ksh93
) 进行进程替换。
注意:这与 Stéphane 的解决方案非常相似sed
,但我还删除了逗号以避免\0
分隔符为paste
,并且我正在使用进程替换。