对于NF,AWK命令无法正常工作

对于NF,AWK命令无法正常工作,awk,command,Awk,Command,我使用下面的awk命令查找所有记录,这些记录正好有34列,以^A(特殊字符)作为分隔符分隔。但即使所有记录都有34列,也有一些记录丢失了。我找不到原因 awk -F "\001" 'NF==34' sl_idms_fdc_consolidate > sl_idms_fdc_consolidate_temp 我不知道为什么“埃德·莫顿”和“格伦·杰克曼”没有直接回答这个问题,也许这太简单了。我今天有时间,我会回复的 ^A可以通过ctrl+V+A键入,但@Ed Morton的建议无助于解决此

我使用下面的awk命令查找所有记录,这些记录正好有34列,以
^A
(特殊字符)作为分隔符分隔。但即使所有记录都有34列,也有一些记录丢失了。我找不到原因

awk -F "\001" 'NF==34' sl_idms_fdc_consolidate > sl_idms_fdc_consolidate_temp

我不知道为什么“埃德·莫顿”和“格伦·杰克曼”没有直接回答这个问题,也许这太简单了。我今天有时间,我会回复的

^A
可以通过
ctrl+V+A
键入,但@Ed Morton的建议无助于解决此问题

1) 我尝试该命令,但当文件中有^A时出错

$ dos2unix file file
dos2unix: Binary symbol found at line 1
dos2unix: Skipping binary file file
dos2unix: Binary symbol found at line 1
dos2unix: Skipping binary file file
2) 它不会改变NF值

所以我还是喜欢@glenn jackman的解决方案,检查并打印出真实的NF,以确认您的输入文件是否有34^A

awk -F "\001" '{print NF}' file

or

awk -F "^A" '{print NF}' file   # you need hold `control+V+A` at same time to type `^A`
3) 当需要检查特殊字符时,请使用以下命令

cat -A file        # some systems may not support `-A` option
cat -vet file

100%原因是记录没有34列(字段)。再次检查输入文件。如果在UNIX上,请尝试查看控制字符。如果您的文件是在Windows上创建的,请尝试运行
dos2unix
删除任何虚假控件Ms。一个有用的调试命令可能是
awk-F“\001”{print NF}”