【问题标题】:Counting no. of Delimiter in a row in a File in Unix数着没有。在 Unix 文件中的一行中的分隔符
【发布时间】:2026-01-13 03:15:01
【问题描述】:

我有一个文件“records.txt”,其中包含超过 200,000 条记录。

每条记录位于单独的行中,并具有由分隔符“|”分隔的多个字段。

每行应该有 35 个字段,但 问题是这些行之一有 35 个字段,即 35 '|'字符。

有人可以在 Unix 中提出一种方法,我可以通过它来识别行。 (比如获取文件中每一行中“|”字符的数量)

【问题讨论】:

    标签: unix shell records


    【解决方案1】:

    试试这个:

    awk -F '|'  'NF != 35 {print NR, $0} ' your_filefile
    

    【讨论】:

    • 这是打印所有等于 35 和不等于...它不工作
    【解决方案2】:

    这个小 perl 脚本应该可以做到:

    cat records.txt | perl -ne '$t = $_; $t =~ s/[^\|]//g; print unless length($t) == 35;'
    

    这通过删除所有字符除了 |,然后计算剩下的内容。

    【讨论】:

      【解决方案3】:

      Greg 使用 bash 的方式,对于 bash 朋友来说 :)

      while read n; do [ `echo $n | tr -cd '|' | wc -c` != 35 ] && echo $n; done < records.txt
      

      【讨论】:

      • 我只是想找出一个有超过 N(35 个)分隔符的行。格雷格和你的,这两个代码都有效。谢谢:)
      最近更新 更多