Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash-根据文件2中的ID在文件1中查找名称_Bash - Fatal编程技术网

bash-根据文件2中的ID在文件1中查找名称

bash-根据文件2中的ID在文件1中查找名称,bash,Bash,抱歉,如果这是重复的,但我搜索并没有找到完全相同的问题。所以我有 文件1: 亚伦ID00456 布拉德ID00123 凯西ID00789 道格ID12345 伊桑ID05555 文件2: ID12345 ID00123 ID00456 保持文件2中ID的顺序,我希望输出文件3为: 道格ID12345 布拉德ID00123 Aaron ID00456尝试此脚本(假设File1.txt和File2.txt位于脚本的同一目录中) 尝试此脚本(假设File1.txt和File2.txt位于脚本的同一目录

抱歉,如果这是重复的,但我搜索并没有找到完全相同的问题。所以我有

文件1:
亚伦ID00456
布拉德ID00123
凯西ID00789
道格ID12345
伊桑ID05555

文件2:
ID12345
ID00123
ID00456

保持文件2中ID的顺序,我希望输出文件3为:
道格ID12345
布拉德ID00123
Aaron ID00456

尝试此脚本(假设File1.txt和File2.txt位于脚本的同一目录中)

尝试此脚本(假设File1.txt和File2.txt位于脚本的同一目录中)


awk
救援

$ awk 'NR==FNR {a[$2]=$1; next} 
               {print a[$1],$1}' file1 file2

Doug ID12345
Brad ID00123
Aaron ID00456

awk
救援

$ awk 'NR==FNR {a[$2]=$1; next} 
               {print a[$1],$1}' file1 file2

Doug ID12345
Brad ID00123
Aaron ID00456

欢迎来到堆栈溢出。请尽快阅读这两页。你在哪个站台工作?Linux还是别的什么?对使用哪些工具有任何限制吗?允许Awk吗?Perl?这些文件有多大?如图所示,或者File2中有数百行,File1中有数千行,或者更大?输出顺序有多重要?文件2中是否存在与文件1中的任何内容不匹配的条目?那该怎么办?你试过什么?即使使用简单的
while read
循环和grep,也会得到结果。也许最快最好的方法是使用awk。欢迎使用堆栈溢出。请尽快阅读这两页。你在哪个站台工作?Linux还是别的什么?对使用哪些工具有任何限制吗?允许Awk吗?Perl?这些文件有多大?如图所示,或者File2中有数百行,File1中有数千行,或者更大?输出顺序有多重要?文件2中是否存在与文件1中的任何内容不匹配的条目?那该怎么办?你试过什么?即使使用简单的
while read
循环和grep,也会得到结果。也许最快最好的方法就是使用awk。非常感谢。即使没有新线,这对我来说也是有效的。由于我有大约100000条记录(行)要处理,这比while循环或grep快得多。步骤1:将file1的第一个字段(名称)读入数组a[],第二个字段(id)是它在数组中的索引。步骤2:根据第一个字段(ID)的索引打印数组元素,然后是第一个字段(ID)本身。我理解得对吗?不知道可以将字符串用作数组中的索引号。非常感谢。即使没有新线,这对我来说也是有效的。由于我有大约100000条记录(行)要处理,这比while循环或grep快得多。步骤1:将file1的第一个字段(名称)读入数组a[],第二个字段(id)是它在数组中的索引。步骤2:根据第一个字段(ID)的索引打印数组元素,然后是第一个字段(ID)本身。我理解得对吗?不知道可以使用字符串作为数组中的索引号。
$ awk 'NR==FNR {a[$2]=$1; next} 
               {print a[$1],$1}' file1 file2

Doug ID12345
Brad ID00123
Aaron ID00456