Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Shell 使用映射文件更改列的名称_Shell_File_Dictionary_Unix_Awk - Fatal编程技术网

Shell 使用映射文件更改列的名称

Shell 使用映射文件更改列的名称,shell,file,dictionary,unix,awk,Shell,File,Dictionary,Unix,Awk,我有一个包含3列的文件,如下所示: NC_0001 10 x NC_0001 11 x NC_0002 90 y 我想使用另一个包含转换的文件.txt更改第一列的名称,如下所示: NC_0001 1 NC_0001 1 NC_0002 2 所以最后我应该: 1 10 x 1 11 x 2 90 y 我该怎么做? 另外,第一个文件是非常大的50GB,所以我必须使用像awk这样的unix命令 awk -f script.awk map_file data_file 作为一个班轮 awk '

我有一个包含3列的文件,如下所示:

NC_0001 10 x
NC_0001 11 x
NC_0002 90 y
我想使用另一个包含转换的文件.txt更改第一列的名称,如下所示:

NC_0001 1
NC_0001 1
NC_0002 2

所以最后我应该:

1 10 x
1 11 x
2 90 y
我该怎么做? 另外,第一个文件是非常大的50GB,所以我必须使用像awk这样的unix命令

awk -f script.awk map_file data_file
作为一个班轮

awk 'NR==FNR{t[$1]=$2} NR!=FNR{$1=t[$1];print}' map_file data_file

如果可能,您应该分割第一个文件,并在每个分区文件上并行运行此命令。然后,加入结果。

欢迎使用堆栈溢出。这也是一个面向专业和热情程序员的问答页面。在问题中添加您自己的代码。你至少要展示你自己为解决这个问题所做的研究。如果我想跳过数据文件的第一行,我只使用NR>1。我应该在代码中的何处添加此项?只需将条件更改为NR!=FNR&&FNR>1
awk 'NR==FNR{t[$1]=$2} NR!=FNR{$1=t[$1];print}' map_file data_file