Bash awk、sed、shell:如何将数据从一个文件使用到另一个文件

Bash awk、sed、shell:如何将数据从一个文件使用到另一个文件,bash,shell,awk,cat,Bash,Shell,Awk,Cat,我有两个文件,格式如下: File1.txt 1 apple 1.056 ref 15 File2.txt 2 apple unknown ref unknown1 如何使用File1.txt中的apple(1.056)值来代替为File2.txt编写的内容?我希望将File2.txt更新为: 2 apple 1.056 ref 15 我想grep命令可能会起作用,但我不确定该怎么做。任何帮助都将不胜感激!谢谢 如何在中使用File1.txt中的apple(1.056)值 为File2.t

我有两个文件,格式如下:

File1.txt

1
apple 1.056
ref 15
File2.txt

2
apple unknown
ref unknown1
如何使用File1.txt中的apple(1.056)值来代替为File2.txt编写的内容?我希望将File2.txt更新为:

2
apple 1.056
ref 15
我想grep命令可能会起作用,但我不确定该怎么做。任何帮助都将不胜感激!谢谢

如何在中使用File1.txt中的apple(1.056)值 为File2.txt编写内容的位置?我想将File2.txt添加到 更新如下:

2
apple 1.056
ref 15
直截了当的
awk
在论坛中重复多次,请在发布前搜索

输入

$ cat f1
1
apple 1.056
ref 15

$ cat f2
2
apple unknown
ref unknown1
$ awk 'FNR==NR{a[$1]=$2;next}($1 in a){$2=a[$1]}1' f1 f2
2
apple 1.056
ref 15
输出

$ cat f1
1
apple 1.056
ref 15

$ cat f2
2
apple unknown
ref unknown1
$ awk 'FNR==NR{a[$1]=$2;next}($1 in a){$2=a[$1]}1' f1 f2
2
apple 1.056
ref 15

请解释整个问题,因为现在只需将Fil1.txt复制到File2.txt并替换第一行,就可以得到您想要的结果。File2是否真的有一个未知..未知的列,或者这只是示例的一部分?File1.txt和File2.txt的结构可能非常不同。apple from File1.txt可能与File2.txtw位于不同的一行:这之所以有效,是因为两个文件都已排序:
join--header File2 File1-o 1.1,2.2
这些问题永远不会消失:)但仍然是一个很好的工作答案++谢谢Akshay Hegde。。。。这个方法的问题是它会把所有的公共变量都转换掉。如果我只想换苹果呢?如何将其特定于关键变量?@user7649922如果不想更改ref,请修改需求(示例输出)。