linux - 查找比特定列长/短的记录

标签 linux shell unix awk sed

这是我的文件:FILEABC.txt

Name|address|age|country
john|london|12|UK
adam|newyork|39|US|X12|123
jake|madrid|45|ESP
ram|delhi
joh|cal|34|US|788

我想找到文件中的 header 计数。所以我有这个命令

猫FILEABC.txt | awk --field-separator='|' '{打印 NF}' |排序-n |uniq -c

我得到的这个命令的结果是

猫FILEABC.txt | awk --field-separator='|' '{打印 NF}' |排序-n |uniq -c

  1 2
  3 4
  1 5
  1 6

我的要求是,如何从我的文件中找到那些只有 2 个字段、4 个字段等的记录。 例如,

如果想查看只有2列的记录:

 ram|delhi

如果想查看 rec 是否有超过 4 个 col:

adam|newyork|39|US|X12|123 

最佳答案

如果您只想打印具有 2 个字段的记录,那么以下内容可能对您有所帮助。

awk -F"|" 'NF==2'   Input_file

对于任何类型的记录,如果您需要超过 4 个字段的行,则将上述条件更改为 NF>4 或者您需要超过 5 个字段的行,例如--> NF>5

解释:通过执行 -F"|" 我确保字段分隔符在这里是管道,然后是 NF 是开箱即用的 awk 变量,它定义了一行中的总字段数,因此根据您的请求检查此处的字段数是否大于 2,如果此条件为 TRUE,则打印当前行(我没有写 print 因为 awk 工作在条件和 Action 的方法上,所以如果这里的条件为真,我没有提到任何 Action ,默认情况下,该行将发生 Action 打印).

关于linux - 查找比特定列长/短的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46971614/

相关文章:

linux - Linux下如何压缩TAR文件

shell - 如何 grep 包含一些二进制数据的文本文件?

oracle - libclntsh.so.11.1 : cannot open shared object file.

linux - 如何将一个文件的文件权限应用于另一个文件

linux - UNIX下如何将两个命令合二为一?

linux - svn upgrade - 从子目录执行命令时不工作

linux - 将 awk 输出保存到变量 BASH

regex - 使用正则表达式和反向匹配,并将其通过管道传递给另一个命令

bash - "2>&1 "是什么意思?

linux - CNN 训练超过了 PBS 中给定核心的数量