我需要使用AWK命令查找文件中的分隔符计数,如果计数超过预期,那么我需要记录这些记录。
使用的代码:
awk 'BEGIN { FS= "^A"; if ( 31 < NF-1) print $0 }' file.dat
但它不起作用。
答案 0 :(得分:1)
作为fedorqui评论,您在BEGIN块中没有任何数据。您必须阅读至少1条记录才能确定您拥有的字段数:
awk -F"^A" 'NR==1 && NF >= 32 {exit} {print}' file.dat
答案 1 :(得分:0)
假设"^A"
是一个包含两个字符的字符串
awk 'BEGIN { FS= "\\^A"} NF-1 > 32' file.dat
会这样做,因为{print}
是匹配的默认操作,最常见的是两个
awk(gawk和mawk)的常见实例都将"\\^A"
翻译成文字
插入符号后面跟着A
。
另一方面,如果"^A"
表示Control-A
,则必须正确
在shell提示符下键入行时引用控制字符
(例如,在bash + readline中它是Control-V
Control-A
),你绝对不能
使用反斜杠。
答案 2 :(得分:0)
略短的版本:
awk _F"^A" 'NF > 32' file.dat
您的原始构造是31 < NF-1
,这只是说NF>32
的一种更复杂的方式。