Awk和跳过特殊字符行

Awk和跳过特殊字符行,awk,Awk,我试图计算文件中某一列的总和,即第18列。 使用awk命令和Printf以正确的十进制格式显示它 SUM=`cat ${INF_TARGET_FILE_PATH}/${EXTRACT_NAME}_${CURRENT_DT}.txt|awk -F"" '{s+=$18}END{printf("%24.2f\n", s)}' 上面的命令将跳过文件中第5-RÉ列之一中具有特殊字符的行。因此,AWK跳过这些行,不考虑该行的和。请帮助解决此问题以获取所有行的总和。您的示例中缺少一个back tics,应

我试图计算文件中某一列的总和,即第18列。 使用awk命令和Printf以正确的十进制格式显示它

SUM=`cat ${INF_TARGET_FILE_PATH}/${EXTRACT_NAME}_${CURRENT_DT}.txt|awk -F"" '{s+=$18}END{printf("%24.2f\n", s)}'

上面的命令将跳过文件中第5-RÉ列之一中具有特殊字符的行。因此,AWK跳过这些行,不考虑该行的和。请帮助解决此问题以获取所有行的总和。

您的示例中缺少一个back tics,应该是:

SUM=`cat ${INF_TARGET_FILE_PATH}/${EXTRACT_NAME}_${CURRENT_DT}.txt|awk -F"" '{s+=$18}END{printf("%24.2f\n", s)}'`
但是您不应该使用back tics,您应该使用括号
$(code)

使用cat向
awk
输入数据也是错误的,在
awk
之后添加pat

SUM=$(awk -F"" '{s+=$18} END {printf "%24.2f\n",s}' ${INF_TARGET_FILE_PATH}/${EXTRACT_NAME}_${CURRENT_DT}.txt)
这可能会解决您的问题,但会给出更正确的代码。
如果您将输入文件提供给我们,将有助于我们了解问题。

是跳过这些文件,还是编码文件(UTF-8?ISO8859-1?文件如何编码以允许非ASCII字符?)导致awk对字段进行错误计数?试着抓住有问题的几行,看看
$18
是否是您所期望的。