今天处理文本的时候,碰到一个问题:行尾 \r 导致在处理字段的时候,总是不能正确匹配。
下面是脚本的一部分,只是一个简单的判断:
- if(( $IN_FILEDATE == "NULL" ))
- then
- IN_FILEDATE=""
- fi
其中 $IN_FILEDATE 为 awk 获取的一行中的最后一个字段,之前在做文本处理的时候碰到过^M的问题,并没有遇到这样的问题。
上面的判断始终没有如愿以偿,打开调试模式 set -x 才发现,$IN_FILEDATE的值中含有 \r,
- + IN_FILEDATE=$'20110317120101\r'
导致判断的时候报错:
- == NULL ))17120101
- == NULL : syntax error: invalid arithmetic operator (error token i == NULL
解决办法:
- sed -i 's/\r//g' inputfile
将行尾的 \r 删除。
将这个错误记下来,引以为鉴。
阅读(1228) | 评论(0) | 转发(0) |