比较awk结果的数量不正确
我使用比较awk结果的数量不正确,awk,Awk,我使用awk获取多个文件的字段数,然后使用if[[]]判断字段数是否等于确切数字,如果是,则返回文件名 代码如下: for file in /root/TB_MOVIL_CDR/incorrect_files/* do num=$(awk -F '|' '{print NF}' $file) if [[ $num -eq 24 ]];then echo $file fi done 但如果发现结果不正确,我很困惑, 如果[[$num-eq 24]]的语法错误?使用awk时不需
awk
获取多个文件的字段数,然后使用if[[]]
判断字段数是否等于确切数字,如果是,则返回文件名
代码如下:
for file in /root/TB_MOVIL_CDR/incorrect_files/*
do
num=$(awk -F '|' '{print NF}' $file)
if [[ $num -eq 24 ]];then
echo $file
fi
done
但如果发现结果不正确,我很困惑,
如果[[$num-eq 24]]的语法错误?使用
awk
时不需要bash命令,请尝试以下操作:
awk -F'|' 'NF==24 {print FILENAME}' /root/TB_MOVIL_CDR/incorrect_files/*
这将测试每个文件的每一行中是否有24个字段,如果找到一行有24个字段,它将打印文件名。注意:如果有多个文件包含24个字段,则会多次打印文件名。如果需要,这是可以避免的
您可以使用此gnu awk
为每个文件打印一次文件名,每个文件有24个字段(由于ENDFILE函数,为gnu):
一个较短的gnu awk
,为每个文件打印一次文件名
awk -F'|' 'NF==24 {print FILENAME;nextfile}' /root/TB_MOVIL_CDR/incorrect_files/*
[[$num-eq 24]]
可以,但是如果您的文件有多行,您将使用多个数字填充num
,这将使[$num-eq 24]
阻塞…哦,我明白您的意思了,谢谢
awk -F'|' 'NF==24 {print FILENAME;nextfile}' /root/TB_MOVIL_CDR/incorrect_files/*