awk - 从下一行获取值并合并-awk
问题描述
我有一个像这样的管道分隔文件
OLD|123432
NEW|232322
OLD|1234452
NEW|232324
OLD|656966
NEW|232325
我正在尝试创建一个新文件,我正在尝试根据第一列中的值(OLD/NEW)合并行。输出文件中的第一列将具有新编号,第二列将具有旧编号。
输出
232322|123432
232324|1234452
232325|656966
我在这里查看了答案如何从命令行将每两行合并为一行?. 我知道这不是确切的解决方案,而是用作起点。
并试图让它解决这个问题,但会引发语法错误。
awk -F "|" 'NR%2{OFS = "|" printf "%s ",$0;next;}1'
解决方案
你可以使用这个awk
:
awk 'BEGIN {FS=OFS="|"} $1 == "NEW" {print $2, old} $1 == "OLD" {old = $2}' file
232322|123432
232324|1234452
232325|656966
推荐阅读
- php - 如何在 Laravel 本地化中的 hreflang 标签中设置语言环境前缀
- python - 当切片列表是递归函数中的参数时,Python 是否会创建一个新列表?
- firebase - google-github-actions 部署多个功能
- php - Laravel Eloquent 悲观锁更新余额
- javascript - 如何在 JavaScript 的循环中添加 eventListener 而不会触发 JSHint 的混淆语义错误?
- php - PHP将任何公斤量转换为可读的公制单位
- python - Http 发布请求 Python 失败。(必填字段)
- mysql - 在 Navicat 中选择多数据库
- csv - 将 csv 文件导入 ArangoDB 时缺少“_from”或“_to”属性
- python - 无法启动 Python 语言服务器