这是我的档案: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
我想在文件中找到标头计数。所以我有这个命令
cat FILEABC.txt | awk --field-separator ='|' '{print NF}'| sort -n | uniq -c
我得到的这个cmd的结果是
cat FILEABC.txt | awk --field-separator ='|' '{print NF}'| sort -n | uniq -c
1 2
3 4
1 5
1 6
我的要求是,如何从我的文件中找到只有2个字段,4个字段等的记录。 对于前,
如果想要查看只有2个col的记录:
ram|delhi
如果想看到rec有超过4个col:
adam|newyork|39|US|X12|123
答案 0 :(得分:1)
如果您只想打印包含2个字段的记录,那么以下内容可能对您有帮助。
NF>4
对于任何类型的记录,如果您需要一个超过4个字段的行,则将上述条件更改为NF>5
,或者您需要具有超过5个字段的行,例如 - > -F"|"
说明: 通过执行NF
我确保字段分隔符是管道,然后awk
是awk
定义一行中TOTAL字段数的box变量,以便根据您的请求检查此处字段数是否大于2,如果此条件为TRUE则打印当前行(我没有写入print,因为{ {1}}适用于条件和操作的方法,所以如果条件为TRUE,我没有提及任何操作,默认情况下,该行将发生打印操作。)
答案 1 :(得分:1)
使用awk
,变量NF
给出记录/行中的字段总数,默认情况下awk
使用单个空格作为字段分隔符,如果更改FS
,则将根据提到的字段分隔符计算NF
,因此您可以做的是
awk -v FS='|' 'NF==2' infile
与
相同# Usual Syntax : awk 'condition { action }' infile
awk -v FS='|' 'NF==2{ print }' infile
超过4个字段
awk -v FS='|' 'NF > 4' infile
答案 2 :(得分:1)
您还可以使用 grep 来过滤2-columed记录:
grep '^[^|]*|[^|]*$' FILEABC.txt
将输出:
ram|delhi