linux - Bash:根据另一个文件中的行更改文件头

标签 linux bash awk header

我在文本文件(dataframe.txt)中有一个数据集,文件的标题是数字中的变量名称。数字的含义(变量的实际名称)存储在另一个文件(variables.txt)中。例如(为简单起见进行编辑:

> head dataframe.txt 
123 456 789
1    2   3
4    5   6
7    8   9

> variables.txt
123 A
456 B
789 C

我想将 dataframe.txt 的 header 更改为存储在 Variables.txt 文件中的名称。数字和名称之间的链接需要保持不变。所需的输出将是:

> head dataframe.txt 
A    B   C
1    2   3
4    5   6
7    8   9

有没有办法根据另一个将数字与名称链接的文件来更改标题?我可以想象几行 awk 就可以做到这一点..

谢谢!

最佳答案

$ awk 'NR==FNR{a[$1]=$2;next} FNR==1{for (i=1;i<=NF;i++) $i=a[$i]} 1' variables.txt dataframe.txt | column -t
A  B  C
1  2  3
4  5  6
7  8  9

关于linux - Bash:根据另一个文件中的行更改文件头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36397933/

相关文章:

linux - 如何根据文件名模式删除文件?

linux - Artifactory 作为 Docker 注册表无法正常工作

linux - 如何在 shell 脚本中将单引号放在变量值内?

bash - 在bash中的数字和点之后添加一个字符

ruby-on-rails - 更新 ruby​​ on rails 的 bash 错误

linux - 在字符串中使用文件中的匹配

regex - 如何将 vim 正则表达式替换命令转换为 sed 或 awk?

linux - 用每一行的用户输入替换文件中的某些字段并保存在同一个文件中

shell - 多个文件的平均值,不考虑不同类型的缺失值

Linux perf_events注解帧指针混淆