shell - 使用 Shell 脚本将类似表格的文本转换为具有列名的单独值
问题描述
我有一个如下的文本文件:
Execution ID, Unique number, Result 1, Result 2
1234567 , 1002 , Dron, User suppressed due to Inactivity Rule
1234567 , 1002 , Dron, User suppressed due to Wrong Email Address
2348976 , 1003 , Dron, User suppressed due to Language Rule
我希望将上述文本转换如下:
Execution ID: 1234567
Unique number: 1002
Result 1: Dron
Result 2: User suppressed due to Inactivity Rule, User suppressed due to Wrong Email Address
Execution ID: 2348976
Unique number: 1003
Result 1: Dron
Result 2: User suppressed due to Language Rule
解决方案
你可以这样做awk
:
awk 'BEGIN{FS=", "}NR==1{split($0, h)}NR>1{printf "%s: %s\n%s: %s\n%s: %s\n%s: %s\n\n",h[1],$1,h[2],$2,h[3],$3,h[4],$4}' textfile
这是一个概念证明:
$ awk -V | head -1
GNU Awk 5.0.1, API: 3.0 (GNU MPFR 3.1.6-p2, GNU MP 6.1.2)
$ cat csv
Execution ID, Unique number, Result 1, Result 2
1234567, 1002, Dron, User suppressed due to Inactivity Rule
2348976, 1002, Dron, User suppressed due to Language Rule
$ awk 'BEGIN{FS=", "}NR==1{split($0, h)}NR>1{printf "%s: %s\n%s: %s\n%s: %s\n%s: %s\n\n",h[1],$1,h[2],$2,h[3],$3,h[4],$4}' csv
Execution ID: 1234567
Unique number: 1002
Result 1: Dron
Result 2: User suppressed due to Inactivity Rule
Execution ID: 2348976
Unique number: 1002
Result 1: Dron
Result 2: User suppressed due to Language Rule
$
推荐阅读
- python - 不同模块中的继承
- javascript - 一个接一个地打开每个 Bootstrap 3 Modal,而不是一起打开
- laravel - Foreach 只返回第一个值
- c++ - 如何测量图像中每个极点的长度(以像素为单位)
- matlab - 获取调用构造函数的函数的完整路径
- parsing - 无法将 YAGO 分类法加载到 Protege
- c++ - 模板类型的静态 Lambda 成员的 C++ 构造
- php - 搜索 mysql 数据库并从 php 和 html 中的结果创建链接
- php - 排序通过3个表MYSQL
- angular - Angular 中的 NgIf 块中断了 Http 调用