以特定方式重新格式化文件内容

时间:2016-03-30 23:14:37

标签: linux bash awk

您好我有以下文件

+--------------------------+-----------------------+-----------------------+- +
|         col_name         |       data_type       |        comment        |
+--------------------------+-----------------------+-----------------------+--+
| id                       | string                |                       |
| name                     | string                |                       |
| filename                 | string                |                       |
| loaddate                 | string                |                       |
| recordid                 | string                |                       |
|                          | NULL                  | NULL                  |
| # Partition Information  | NULL                  | NULL                  |
| # col_name               | data_type             | comment               |
|                          | NULL                  | NULL                  |
| fname                    | string                |                       |
+--------------------------+-----------------------+-----------------------+--+

我想创建此输出

id,name,filename,loaddate,recordid

除了页眉,页脚和分区信息之外,基本上以逗号分隔列表的列名称。

使用两个awk和一个粘贴来实现所需的输出,并使用paste创建一行,使用临时文件。

awk 'NR>3 {l[NR] = $0} END {for (i=1; i<=NR-3; i++) print l[i]}' g.txt > t.t
awk '{if (substr($2,3,1) != "") print $2}' t.t | paste -s -d ,

问题是如何在一行命令中执行此操作?

1 个答案:

答案 0 :(得分:0)

这应该这样做:

addClass("checked")

输出是:

awk 'NR>3 && NR<9 {if (substr($2,1,1) != "") {if(length(a) == 0) {a=$2} else {a=a","$2}}} END {print a}' a='' g.txt
相关问题