我试图获取文件中特定列的总和,即第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ÉPARATIONS之一中具有特殊字符的行。因此,Awk跳过这些行并且不考虑该行的总和。请帮助解决此问题,以获取所有行的总和。
答案 0 :(得分:1)
您的示例中缺少后退抽搐,应该是:
SUM=`cat ${INF_TARGET_FILE_PATH}/${EXTRACT_NAME}_${CURRENT_DT}.txt|awk -F"" '{s+=$18}END{printf("%24.2f\n", s)}'`
但是你不应该使用背部抽搐,你应该使用括号$(code)
使用cat将数据输入awk
也是错误的方法,在awk
之后添加拍子
SUM=$(awk -F"" '{s+=$18} END {printf "%24.2f\n",s}' ${INF_TARGET_FILE_PATH}/${EXTRACT_NAME}_${CURRENT_DT}.txt)
这可能会解决您的问题,但会提供更正确的代码 如果你给我们你的输入文件,它将帮助我们理解这个问题。