首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash读取CSV文件中的所有列并在每一行中显示空白单元格

Bash读取CSV文件中的所有列并在每一行中显示空白单元格
EN

Unix & Linux用户
提问于 2018-08-07 08:51:29
回答 3查看 861关注 0票数 -1

我需要脚本遍历每一列并检查空白,并将其分组为1列.例如第一排:香蕉,第二排<>瑞秋,第5排:rachel,莫妮卡,钱德勒,乔伊,珍妮丝,香蕉

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2018-08-07 10:11:34

看看这能让你走多远

代码语言:javascript
运行
复制
awk -F\; '
    {TMP = ""
     for (i=1; i<=NF; i++) if ($i == "") TMP = sprintf ("%s,%c", TMP, 64+i)
     print substr (TMP,2)
    }
' /test1.csv
B,F,H
A,G,H

A,C,F

如果需要,调整字段分隔符。超过第26栏就会失败。

适应新的要求

代码语言:javascript
运行
复制
    awk -F\; '
    NR == 1 {MX = split ($0, HDR)
             next
            }
            {TMP = ""
             for (i=1; i<=MX; i++) if ($i == "") TMP = sprintf ("%s,%s", TMP, HDR[i])
             print substr (TMP,2)
            }
    ' file
banana
rachel
banana
rachel,monica,chandler,joey,janice,banana
rachel,monica,chandler,joey,banana
票数 1
EN

Unix & Linux用户

发布于 2018-08-07 11:27:09

也试试这个:

代码语言:javascript
运行
复制
BEGIN {FS=OFS=","}
{
    if (NR == 1)
        split($0, hdr)

        if (nr) {nr = 0; print("")}
        for(f=1; f<=NF; f++)
            if ($f == "") {
                if (!nr)
                    printf("%s", hdr[f])
                else
                    printf("%c%s", OFS, hdr[f])
                nr = 1
            }
}

下面是一个特殊的香蕉列实现:

代码语言:javascript
运行
复制
BEGIN {FS = OFS = ","}

NR == 1 {
        printf("%s%c%s\n", $0, OFS, "BANANA")
        split($0, hdr)
        next
}

{
        for(f = 1; f <= NF; f++)
            if ($f == "") {
                printf("%s%c%s\n", $0, OFS, hdr[f])
                break
            }
}
票数 0
EN

Unix & Linux用户

发布于 2018-08-07 12:45:33

我想你是在寻找一种类似于

代码语言:javascript
运行
复制
awk '
BEGIN { FS=";" }
NR==1 {
        for(i = 1; i <= NF; i++) { heads[i]=$i; }
      }

      { for(i = 1; i <= NF; i++) {
          if ($i == "") { printf "%s ",heads[i] }
        }
        print "";
      } 
'

这应该将第一行的字段分解为数组heads。对于不是第一行的每一行,如果字段为空,awk将遍历这些列并打印列名。但是没有时间去测试。可能含有臭虫。YMMV

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/461009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档