我不确定如何实现这一点,但我有一个50 / 60k行的文件,结构如下:
{test_id: 12345, test_name: '', test_time: 213123}
{test_id: 12346, test_name: '', test_time: 331233}
并且,我有第二个文件,其中包含每个国家/地区的参考ID:
{test_id: 12345, test_name: 'test_a'}
{test_id: 12346, test_name: 'test_b'}
那么,使用test_id作为参考,为了从文件A更新test_name字段,跨越这两个文件的最有效方法是什么?
越过id&#39> s后的预期结果:
{test_id: 12345, test_name: 'test_a', test_time: 213123}
{test_id: 12346, test_name: 'test_b', test_time: 331233}
使用sed或awk将是实现此目的的首选方式。
答案 0 :(得分:1)
如果第一个文件名是temp.txt,其中包含除测试名称以外的所有信息,第二个文件名是temp1.txt,其中包含文本名称信息,则以下命令将执行您想要的操作并将结果文件存储在res中。 TXT。
awk 'BEGIN
{ while(getline < "temp1.txt" ) { codes[$2] = substr($4, 0, length($4)-1) } }
{ printf "%s %s %s %s, %s %s \n", $1, $2 , $3, codes[$2] , $5 , $6 }' temp.txt > res.txt
答案 1 :(得分:1)
$ cat tst.awk
{ match($0,/'[^']*'/) }
NR==FNR { id2name[$2] = substr($0,RSTART,RLENGTH); next }
{ print substr($0,1,RSTART-1) id2name[$2] substr($0,RSTART+RLENGTH) }
$ awk -f tst.awk fileA fileB
{test_id: 12345, test_name: 'test_a', test_time: 213123}
{test_id: 12346, test_name: 'test_b', test_time: 331233}