我正在使用以下awk命令查找具有由^A
(特殊字符)分隔的正好34列的所有记录作为分隔符。但即使所有记录都有34列,也会丢失一些记录。我找不到原因。
awk -F "\001" 'NF==34' sl_idms_fdc_consolidate > sl_idms_fdc_consolidate_temp
答案 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