首页 > 解决方案 > bash - 替换第一个文件中的值,查看其他文件,将其称为行号

问题描述

我需要将 file1.txt 中的第一个值替换为第二个文件 file2.txt 中的值,将它们视为行号

例如:

文件1.txt

3|1|D|A  
3|2|2018-09-11 11:25:13.000000857|2018-09-11 11:26:03.000000459  

文件2.txt

12~299673112~S  
12~299673232~S  
13~299673233~W  
13~299673222~W  

输出

13~299673233~W|1|D|A  
13~299673233~W|2|2018-09-11 11:25:13.000000857|2018-09-11 11:26:03.000000459

提前致谢

标签: bashunix

解决方案


你可以使用这个awk

awk 'BEGIN{FS=OFS="|"} NR==FNR{a[FNR]=$0; next} $1 in a{$1=a[$1]; print}' file2 file1

13~299673233~W|1|D|A
13~299673233~W|2|2018-09-11 11:25:13.000000857|2018-09-11 11:26:03.000000459

推荐阅读