AWK命令对NF无法正常工作

时间:2014-02-20 20:36:41

标签: awk command

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

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

1 个答案:

答案 0 :(得分:0)

我不确定为什么@Ed Morton和@glenn jackman没有直接回答这个问题,也许这太简单了。我今天有时间,我回复。

^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