linux - 使用脚本组织文件
问题描述
所以我有两个平面文件,格式如下:
文件1.txt
Customer1 12345 12346 12347
Customer2 14444 14445
文件2.txt
12345 aol.com
12347 gmail.com
12346 google.com
14444 yahoo.com
14445 outlook.com
我需要能够将文件翻译成这样的东西:
Customer1 aol.com google.com gmail.com
Customer2 yahoo.com outlook.com
这是我到目前为止所拥有的
$ awk 'NR==FNR {a[$1]=$2; next} $2 in a {print $0, a[$2]}' OFS='\t' File2.txt File1.txt
但是,这仅查看第一个文件的第 2 列,如何扩展它以查看 file1 中的所有列
解决方案
awk
可以遍历字段。尝试这样的事情 -
$: awk 'NR==FNR {a[$1]=$2; next;}
{ printf "%s ", $1;
for (i=2;i<=NF;i++) {
printf "%s ", a[$i];
};
printf "\n";
}' File2.txt File1.txt
Customer1 aol.com google.com gmail.com
Customer2 yahoo.com outlook.com
推荐阅读
- leaflet - 工具提示在圈子上未始终显示的问题
- visual-studio-code - 来自 Atom (Mac) 的 Visual Studio Code 新手 - 如何拥有多个项目
- list - 检查一个列表是否包含另一个列表中的所有值的惯用 Haskell 方法是什么?
- java - 无法将输入从 JTextField 存储到文件写入器
- java - 有没有什么简单的方法可以使用spring boot基于另一个ID从一个开始生成顺序ID?
- windows-subsystem-for-linux - WSLTTY/MINTTY 启动失败
- javascript - 在 Electron.js 中传播 AbortSignal
- python - 当pythons xarray模块中每个像素的范围不同时,是否可以按时间范围选择数据集
- r - 在 R 中对列表中的唯一值进行分组的方法?
- javascript - React Refactoring 组件的 props 太多