如何与服用其他文件的帐户显示文件内容? [英] How to display content of a file with taking account of other file?
本文介绍了如何与服用其他文件的帐户显示文件内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在文件1 ,内容如下
{"name":"clio5", "value":"13"}
{"name":"citroen_c4", "value":"23"}
{"name":"citroen_c3", "value":"12"}
{"name":"golf4", "value":"16"}
{"name":"golf3", "value":"8"}
和我在文件2 ,内容如下
{"name":"clio5", "value":"14"}
{"name":"citroen_c4", "value":"25"}
{"name":"golf4", "value":"18"}
我想,以显示在文件1 的内容执行shell命令,并在文件2 。如果名称
中都存在的文件1 和文件2 所以我想只显示在的相关行文件2
I want to execute a shell command in order to display the content of the file1 and the file2. if a name
exist in both file1 and file2 so I want to display only the related line of the file2.
所以输出应该是这样的:
So the output should look like this:
$command taking account file1 file2
{"name":"clio5", "value":"14"}
{"name":"citroen_c4", "value":"25"}
{"name":"citroen_c3", "value":"12"}
{"name":"golf4", "value":"18"}
{"name":"golf3", "value":"8"}
该命令不应该修改的文件1 既不文件2
修改
在文件1 和文件2 有exactelly相同的内容格式为:
The file1 and file2 have exactelly the same content format:
{"name":"any", "value":"xx"}
该命令应尽可能简单
The command should be as simple as possible
该命令可以包含的grep
, SED
, AWK
推荐答案
下面是一个办法 AWK
:
awk -F"[:,]" '
NR==FNR { name[$2]=$0;next }
($2 in name) { delete name[$2]; print $0 }
END { for (left in name) print name[left] }' file1 file2
测试:
$ head file*
==> file1 <==
{"name":"clio5", "value":"13"}
{"name":"citroen_c4", "value":"23"}
{"name":"citroen_c3", "value":"12"}
{"name":"golf4", "value":"16"}
{"name":"golf3", "value":"8"}
==> file2 <==
{"name":"clio5", "value":"14"}
{"name":"citroen_c4", "value":"25"}
{"name":"golf4", "value":"18"}
$ awk -F"[:,]" '
NR==FNR { name[$2]=$0;next }
($2 in name) { delete name[$2]; print $0 }
END { for (left in name) print name[left] }' file1 file2
{"name":"clio5", "value":"14"}
{"name":"citroen_c4", "value":"25"}
{"name":"golf4", "value":"18"}
{"name":"golf3", "value":"8"}
{"name":"citroen_c3", "value":"12"}
这篇关于如何与服用其他文件的帐户显示文件内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文