bash - bash - 替换第一个文件中的值,查看其他文件,将其称为行号
问题描述
我需要将 file1.txt 中的第一个值替换为第二个文件 file2.txt 中的值,将它们视为行号
例如:
文件1.txt
3|1|D|A
3|2|2018-09-11 11:25:13.000000857|2018-09-11 11:26:03.000000459
文件2.txt
12~299673112~S
12~299673232~S
13~299673233~W
13~299673222~W
输出
13~299673233~W|1|D|A
13~299673233~W|2|2018-09-11 11:25:13.000000857|2018-09-11 11:26:03.000000459
提前致谢
解决方案
你可以使用这个awk
:
awk 'BEGIN{FS=OFS="|"} NR==FNR{a[FNR]=$0; next} $1 in a{$1=a[$1]; print}' file2 file1
13~299673233~W|1|D|A
13~299673233~W|2|2018-09-11 11:25:13.000000857|2018-09-11 11:26:03.000000459
推荐阅读
- spring - spring 云流 kafka 消费者 clientId 匿名
- c# - C# 库如何检测 app.config 是否存在,如果不存在则手动加载配置文件?
- java - 如何按参数运行不同的测试套件?
- javascript - 如何解析通过 Axios GET 请求获取的对象 Node.js Express
- reactjs - 未定义的 404 和 React Hook useEffect 缺少依赖项
- python-3.x - 带有前瞻的正则表达式在 Python 中不匹配
- webcam - IMFSourceReader.ReadSample 在读取流 1 后从不触发回调。对流 0 的调用工作正常
- perl - Perl 反引号和管道之间的区别
- c# - 带有 HostFileChangeMonitor 的 CacheItemPolicy 需要时间来清理缓存
- c - 程序不编辑输出文件